summaryrefslogtreecommitdiff
path: root/lib/silmataivas/ntfy_notifier.ex
blob: 26815dbd0060b0176e55adcdd159bcce5598e09d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
defmodule Silmataivas.Notifications.NtfyNotifier do
  @moduledoc """
  Sends push notifications using ntfy.sh.
  """

  @ntfy_url System.get_env("NTFY_URL") || "https://ntfy.sh"

  def send_alert(
        topic,
        %{
          "main" => %{"temp" => temp},
          "wind" => %{"speed" => speed},
          "dt_txt" => time_str
        } = entry
      ) do
    rain_mm = get_in(entry, ["rain", "3h"]) || 0.0
    wind_kmh = speed * 3.6

    message = """
    🚨 Weather alert for your location (#{time_str}):

    🌬️ Wind: #{Float.round(wind_kmh, 1)} km/h
    🌧️ Rain: #{rain_mm} mm
    🌡️ Temperature: #{temp} °C

    Stay safe,
    — Silmätaivas
    """

    Req.post("#{@ntfy_url}/#{topic}",
      headers: [{"Priority", "5"}],
      body: message
    )
  end
end