Skip to content

Commit 71bc492

Browse files
committed
customize webhook url per alert severity
1 parent e9a4497 commit 71bc492

File tree

6 files changed

+24
-21
lines changed

6 files changed

+24
-21
lines changed

lib/algora/activities/activities.ex

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,12 @@ defmodule Algora.Activities do
300300

301301
discord_job =
302302
if discord_payload = DiscordViews.render(activity) do
303-
[Algora.Activities.SendDiscord.changeset(%{payload: discord_payload})]
303+
[
304+
Algora.Activities.SendDiscord.changeset(%{
305+
url: Algora.config([:discord, :webhook_url]),
306+
payload: discord_payload
307+
})
308+
]
304309
else
305310
[]
306311
end

lib/algora/activities/jobs/send_discord.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ defmodule Algora.Activities.SendDiscord do
1111
end
1212

1313
@impl Oban.Worker
14-
def perform(%Oban.Job{args: %{"payload" => payload}}) do
15-
Algora.Discord.send_message(payload)
14+
def perform(%Oban.Job{args: %{"url" => url, "payload" => payload}}) do
15+
Algora.Discord.send_message(url, payload)
1616
end
1717
end

lib/algora/admin/admin.ex

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,7 @@ defmodule Algora.Admin do
469469
Logger.error(message)
470470

471471
%{
472+
url: Algora.config([:discord, :webhook_url]),
472473
payload: %{
473474
embeds: [
474475
%{
@@ -489,16 +490,19 @@ defmodule Algora.Admin do
489490

490491
email_job =
491492
Algora.Activities.SendEmail.changeset(%{
492-
title: "Error: #{message}",
493+
title: "#{message}",
493494
body: message,
494-
name: "Algora Alert",
495+
name: "Action required",
495496
496497
})
497498

498499
discord_job =
499500
SendDiscord.changeset(%{
501+
url: Algora.Settings.get("discord_webhook_url")["critical"] || Algora.config([:discord, :webhook_url]),
500502
payload: %{
501-
embeds: [%{color: color(severity), title: "Error", description: message, timestamp: DateTime.utc_now()}]
503+
embeds: [
504+
%{color: color(severity), title: "Action required", description: message, timestamp: DateTime.utc_now()}
505+
]
502506
}
503507
})
504508

@@ -509,6 +513,7 @@ defmodule Algora.Admin do
509513
Logger.info(message)
510514

511515
%{
516+
url: Algora.config([:discord, :webhook_url]),
512517
payload: %{
513518
embeds: [
514519
%{

lib/algora/integrations/discord/client.ex

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,8 @@ defmodule Algora.Discord.Client do
33

44
require Logger
55

6-
def webhook_url, do: Algora.config([:discord, :webhook_url])
7-
8-
def post(data) do
9-
if url = webhook_url() do
10-
do_post(url, data)
11-
else
12-
{:ok, nil}
13-
end
14-
end
6+
def post(nil, _data), do: {:ok, nil}
7+
def post(url, data), do: do_post(url, data)
158

169
defp do_post(url, data) do
1710
headers = [{"Content-Type", "application/json"}]

lib/algora/integrations/discord/discord.ex

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ defmodule Algora.Discord do
2121
2222
## Examples
2323
24-
iex> Discord.send_message(%{content: "Hello, world!"})
24+
iex> Discord.send_message("https://discord.com/api/webhooks/1234567890/abcdefg", %{content: "Hello, world!"})
2525
{:ok, response}
2626
27-
iex> Discord.send_message(%{
27+
iex> Discord.send_message("https://discord.com/api/webhooks/1234567890/abcdefg", %{
2828
...> embeds: [
2929
...> %{
3030
...> color: 0x6366f1,
@@ -41,15 +41,15 @@ defmodule Algora.Discord do
4141
...> })
4242
{:ok, response}
4343
"""
44-
@spec send_message(map()) :: {:ok, map() | nil} | {:error, any()}
45-
def send_message(input) do
44+
@spec send_message(String.t(), map()) :: {:ok, map() | nil} | {:error, any()}
45+
def send_message(url, input) do
4646
input =
4747
Map.merge(
4848
%{username: "Algora.io", avatar_url: "https://algora.io/asset/storage/v1/object/public/images/logo-256px.png"},
4949
input
5050
)
5151

52-
case Client.post(input) do
52+
case Client.post(url, input) do
5353
{:ok, response} ->
5454
{:ok, response}
5555

lib/algora_web/live/org/job_live.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -704,7 +704,7 @@ defmodule AlgoraWeb.Org.JobLive do
704704
})
705705
|> Repo.update()
706706

707-
Algora.Admin.alert("Wire intent: #{inspect(changeset.changes)}", :info)
707+
Algora.Admin.alert("Wire intent: #{inspect(changeset.changes)}", :critical)
708708

709709
{:noreply,
710710
socket

0 commit comments

Comments
 (0)