Add LastFm feed for a given user

This commit is contained in:
Claudio Ortolina
2024-11-04 09:17:01 +00:00
parent c9beef6bdd
commit 1abcc5e6ad
8 changed files with 202 additions and 0 deletions
+35
View File
@@ -0,0 +1,35 @@
defmodule LastFm.Refresh do
use GenServer
require Logger
alias LastFm.{API, Feed}
@refresh_interval System.convert_time_unit(30, :second, :millisecond)
def start_link(config) do
GenServer.start_link(__MODULE__, config, name: __MODULE__)
end
def init(config) do
if config.api_key do
{:ok, config, {:continue, :refresh}}
else
:ignore
end
end
def handle_continue(:refresh, config) do
case API.get_recent_tracks(config.user, config.api_key) do
{:ok, tracks} ->
Feed.update(tracks)
Process.send_after(self(), :refresh, @refresh_interval)
{:noreply, config}
{:error, _reason} ->
# TODO: think about failure scenario - error is logged at the API level
Process.send_after(self(), :refresh, @refresh_interval)
{:noreply, config}
end
end
end