diff --git a/lib/last_fm/config.ex b/lib/last_fm/config.ex new file mode 100644 index 00000000..43446e83 --- /dev/null +++ b/lib/last_fm/config.ex @@ -0,0 +1,18 @@ +defmodule LastFm.Config do + @type t :: %{ + api: module(), + api_key: String.t(), + user: String.t(), + refresh_interval: pos_integer() + } + + defstruct api: LastFm.Api, + api_key: "", + user: "", + refresh_interval: 60_000 + + @spec new(Enumerable.t()) :: t() + def new(opts) do + struct(__MODULE__, opts) + end +end diff --git a/lib/last_fm/refresh.ex b/lib/last_fm/refresh.ex index e4bd88d0..7d3f728f 100644 --- a/lib/last_fm/refresh.ex +++ b/lib/last_fm/refresh.ex @@ -5,12 +5,7 @@ defmodule LastFm.Refresh do alias LastFm.Feed - @type config :: %{ - api: module(), - api_key: String.t(), - user: String.t(), - refresh_interval: pos_integer() - } + @type config :: LastFm.Config.t() @spec start_link(config) :: GenServer.on_start() def start_link(config) do @@ -25,8 +20,6 @@ defmodule LastFm.Refresh do @impl true @spec init(config) :: {:ok, config, {:continue, :refresh}} | :ignore def init(config) do - config = Map.new(config) - if enabled?(config) do {:ok, config, {:continue, :refresh}} else diff --git a/lib/music_library/application.ex b/lib/music_library/application.ex index d5759b0e..c7381ee4 100644 --- a/lib/music_library/application.ex +++ b/lib/music_library/application.ex @@ -43,5 +43,6 @@ defmodule MusicLibrary.Application do defp last_fm_config do Application.get_env(:music_library, LastFm) + |> LastFm.Config.new() end end