mirror of
https://github.com/TheRealOwenRees/plantid-discord-bot.git
synced 2026-07-23 04:26:57 +00:00
Projects and Diseases placeholder application commands (#17)
* fix module name in backup * save projects to persistent_term * retrieve projects on bot startup * remove commented out code * register project autocomplete * placeholder text for project * placeholder disease command
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
defmodule PlantIdDiscordBot.PlantNet.Projects do
|
||||
@moduledoc """
|
||||
Functions related to PlantNet's projecs
|
||||
"""
|
||||
require Logger
|
||||
alias HTTPoison.Response
|
||||
|
||||
@plantnet_api_base_url Application.compile_env(:plantid_discord_bot, :plantnet_api_base_url)
|
||||
|
||||
def fetch_projects do
|
||||
try do
|
||||
build_query_uri()
|
||||
|> get_response()
|
||||
|> parse_response()
|
||||
|> save_projects()
|
||||
rescue
|
||||
e ->
|
||||
Logger.error(Exception.format(:error, e, __STACKTRACE__))
|
||||
end
|
||||
end
|
||||
|
||||
defp build_query_uri do
|
||||
URI.parse("#{@plantnet_api_base_url}/projects")
|
||||
|> URI.append_query("lang=en")
|
||||
|> URI.append_query("type=kt")
|
||||
|> URI.append_query("api-key=#{Application.get_env(:plantid_discord_bot, :plantnet_api_key)}")
|
||||
|> URI.to_string()
|
||||
end
|
||||
|
||||
defp get_response(query_uri), do: HTTPoison.get!(query_uri)
|
||||
|
||||
defp parse_response(%Response{status_code: 200, body: body}), do: Jason.decode!(body)
|
||||
|
||||
defp parse_response(%Response{status_code: 401, body: body}) do
|
||||
Logger.critical("Unauthorized request to PlantNet API: #{body}")
|
||||
end
|
||||
|
||||
defp save_projects(projects), do: :persistent_term.put(:projects, projects)
|
||||
|
||||
def retrieve_projects, do: :persistent_term.get(:projects)
|
||||
|
||||
def find_project_by_description(description) do
|
||||
retrieve_projects()
|
||||
|> Enum.find(&(&1["description"] == description))
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user