Explicit error handling when dealing with secrets

This commit is contained in:
Claudio Ortolina
2026-02-09 11:08:57 +00:00
parent 9da995bce8
commit 0bdad096d0
+13 -6
View File
@@ -37,8 +37,7 @@ defmodule MusicLibrary.ScrobbleActivity do
if release_duration == 0 do
{:error, :no_duration}
else
session_key = Secrets.get!("last_fm_session_key").value
with {:ok, session_key} <- fetch_session_key() do
{scrobbles, _finished_at} =
release_with_tracks
|> MusicBrainz.Release.tracks()
@@ -47,6 +46,7 @@ defmodule MusicLibrary.ScrobbleActivity do
LastFm.scrobble(scrobbles, session_key)
end
end
end
def scrobble_medium(number, release_with_tracks, opts) when is_list(opts) do
case Enum.sort(opts) do
@@ -83,8 +83,7 @@ defmodule MusicLibrary.ScrobbleActivity do
if medium_duration == 0 do
{:error, :no_duration}
else
session_key = Secrets.get!("last_fm_session_key").value
with {:ok, session_key} <- fetch_session_key() do
medium =
release_with_tracks.media
|> Enum.find(fn medium -> medium.number == number end)
@@ -96,6 +95,7 @@ defmodule MusicLibrary.ScrobbleActivity do
LastFm.scrobble(scrobbles, session_key)
end
end
end
def scrobble_tracks(selected_track_ids, release_with_tracks, opts) when is_list(opts) do
case Enum.sort(opts) do
@@ -135,8 +135,7 @@ defmodule MusicLibrary.ScrobbleActivity do
if tracks_duration == 0 do
{:error, :no_duration}
else
session_key = Secrets.get!("last_fm_session_key").value
with {:ok, session_key} <- fetch_session_key() do
{scrobbles, _finished_at} =
selected_tracks
|> to_scrobbles(release_with_tracks, started_at)
@@ -144,6 +143,14 @@ defmodule MusicLibrary.ScrobbleActivity do
LastFm.scrobble(scrobbles, session_key)
end
end
end
defp fetch_session_key do
case Secrets.get("last_fm_session_key") do
%{value: value} -> {:ok, value}
nil -> {:error, :no_session_key}
end
end
defp to_scrobbles(tracks, release_with_tracks, started_at) do
tracks