From edf4364498f69c09580bb9c551b755ee24d70285 Mon Sep 17 00:00:00 2001 From: Owen Date: Fri, 27 Dec 2024 09:22:26 +0100 Subject: [PATCH] update deps to pull from hex --- CHANGELOG.md | 0 config/prod.exs | 4 +- config/runtime.exs | 2 +- lib/logger/discord_logger.ex | 88 ------------------------------------ mix.exs | 4 +- mix.lock | 1 + 6 files changed, 7 insertions(+), 92 deletions(-) create mode 100644 CHANGELOG.md delete mode 100644 lib/logger/discord_logger.ex diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..e69de29 diff --git a/config/prod.exs b/config/prod.exs index aa8a37c..6790285 100644 --- a/config/prod.exs +++ b/config/prod.exs @@ -7,6 +7,6 @@ config :plantid_discord_bot, config :plantid_discord_bot, :environment, :prod config :logger, - backends: [{PlantIdDiscordBot.DiscordLogger, :discord_logger}] + backends: [{LoggerWebhookBackend, :webhook_logger}] -config :logger, :discord_logger, level: :error +config :logger, :webhook_logger, level: :error diff --git a/config/runtime.exs b/config/runtime.exs index 10f4a02..71a4ea7 100644 --- a/config/runtime.exs +++ b/config/runtime.exs @@ -10,7 +10,7 @@ config :plantid_discord_bot, config :nostrum, token: System.get_env("PLANTID_DISCORD_BOT_TOKEN") -config :logger, :discord_logger, +config :logger, :webhook_logger, webhook_url: System.get_env("PLANTID_LOGS_DISCORD_WEBHOOK_URL"), level: :error, bot_token: System.get_env("PLANTID_DISCORD_BOT_TOKEN") diff --git a/lib/logger/discord_logger.ex b/lib/logger/discord_logger.ex deleted file mode 100644 index df34154..0000000 --- a/lib/logger/discord_logger.ex +++ /dev/null @@ -1,88 +0,0 @@ -defmodule PlantIdDiscordBot.DiscordLogger do - require Logger - - @behaviour :gen_event - - def init({__MODULE__, name}) do - {:ok, configure(name, [])} - end - - def handle_call({:configure, opts}, %{name: name} = state) do - {:ok, :ok, configure(name, opts, state)} - end - - def handle_event({_level, gl, {Logger, _, _, _}}, state) when node(gl) != node() do - {:ok, state} - end - - def handle_event({level, _gl, {Logger, msg, ts, md}}, %{} = state) do - if is_level_okay(level, state.level) do - log_to_discord(state.webhook_url, level, msg, ts, md) - end - - {:ok, state} - end - - def handle_event(:flush, state) do - {:ok, state} - end - - def handle_info(_, state) do - {:ok, state} - end - - defp is_level_okay(lvl, min_level) do - is_nil(min_level) or Logger.compare_levels(lvl, min_level) != :lt - end - - def log_to_discord(webhook_url, level, msg, ts, md) do - formatted_msg = format_message(level, msg, ts, md) - body = %{content: formatted_msg} |> Jason.encode!() - headers = [{~c"Content-Type", ~c"application/json"}] - - :httpc.request( - :post, - {webhook_url, headers, ~c"application/json", body}, - [], - [] - ) - |> case do - {:ok, {{~c"HTTP/1.1", status, _}, _headers, _body}} when status in 200..299 -> - :ok - - {:ok, {{~c"HTTP/1.1", status, _}, _headers, response_body}} -> - Logger.error( - "Failed to send log to Discord: Status #{status}, Body: #{inspect(response_body)}" - ) - - {:error, reason} -> - Logger.error("Error sending log to Discord: #{inspect(reason)}") - end - end - - def format_message(level, msg, _ts, md) do - timestamp = DateTime.utc_now() - source = md[:application] - msg = IO.iodata_to_binary(msg) |> String.slice(0..1900) - - "[#{timestamp}] [#{source}] [#{level}] `#{msg}`" - end - - defp configure(name, opts) do - state = %{name: name, format: nil, level: nil, metadata: nil, metadata_filter: nil} - configure(name, opts, state) - end - - defp configure(name, opts, state) do - env = Application.get_env(:logger, name, []) - opts = Keyword.merge(env, opts) - Application.put_env(:logger, name, opts) - - new_state = %{ - webhook_url: Keyword.get(opts, :webhook_url, nil), - level: Keyword.get(opts, :level) - } - - Map.merge(state, new_state) - end -end diff --git a/mix.exs b/mix.exs index f0303ac..43094e7 100644 --- a/mix.exs +++ b/mix.exs @@ -4,7 +4,7 @@ defmodule PlantidDiscordBot.MixProject do def project do [ app: :plantid_discord_bot, - version: "0.1.0", + version: "0.1.1", elixir: "~> 1.16", start_permanent: Mix.env() == :prod, deps: deps() @@ -29,6 +29,8 @@ defmodule PlantidDiscordBot.MixProject do {:httpoison, "~> 2.2"}, {:image, "~> 0.55"}, {:jason, "~> 1.4"}, + {:logger_webhook_backend, "~> 0.0.2"}, + {:plug, "~> 1.12"}, {:plug_cowboy, "~> 2.7"}, {:quantum, "~> 3.5"} ] diff --git a/mix.lock b/mix.lock index 4617be3..2a1d7c7 100644 --- a/mix.lock +++ b/mix.lock @@ -18,6 +18,7 @@ "idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"}, "image": {:hex, :image, "0.55.2", "f21b5341ee05dfe2e0f649c34c6335cbce44be55e3ce3ced404ac008bef6c335", [:mix], [{:bumblebee, "~> 0.3", [hex: :bumblebee, repo: "hexpm", optional: true]}, {:evision, "~> 0.1.33 or ~> 0.2", [hex: :evision, repo: "hexpm", optional: true]}, {:exla, "~> 0.5", [hex: :exla, repo: "hexpm", optional: true]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: true]}, {:kino, "~> 0.13", [hex: :kino, repo: "hexpm", optional: true]}, {:nx, "~> 0.7", [hex: :nx, repo: "hexpm", optional: true]}, {:nx_image, "~> 0.1", [hex: :nx_image, repo: "hexpm", optional: true]}, {:phoenix_html, "~> 2.1 or ~> 3.2 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.13", [hex: :plug, repo: "hexpm", optional: true]}, {:req, "~> 0.4", [hex: :req, repo: "hexpm", optional: true]}, {:rustler, "> 0.0.0", [hex: :rustler, repo: "hexpm", optional: true]}, {:scholar, "~> 0.3", [hex: :scholar, repo: "hexpm", optional: true]}, {:sweet_xml, "~> 0.7", [hex: :sweet_xml, repo: "hexpm", optional: false]}, {:vix, "~> 0.23", [hex: :vix, repo: "hexpm", optional: false]}], "hexpm", "aa126e45b514810d1af89eded505ed3e523acefbb005f6220f8fbc1955904607"}, "jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"}, + "logger_webhook_backend": {:hex, :logger_webhook_backend, "0.0.2", "9bca14b3c184b1a11b1ef7b49954a8eb8b3bf993cad2436db0f0374962c8d33d", [:mix], [{:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "94c693c6ee4aa3c6c5b8d89f32495646b88ca943478ad56b997b497a68efd316"}, "metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"}, "mime": {:hex, :mime, "2.0.6", "8f18486773d9b15f95f4f4f1e39b710045fa1de891fada4516559967276e4dc2", [:mix], [], "hexpm", "c9945363a6b26d747389aac3643f8e0e09d30499a138ad64fe8fd1d13d9b153e"}, "mimerl": {:hex, :mimerl, "1.3.0", "d0cd9fc04b9061f82490f6581e0128379830e78535e017f7780f37fea7545726", [:rebar3], [], "hexpm", "a1e15a50d1887217de95f0b9b0793e32853f7c258a5cd227650889b38839fe9d"},