diff --git a/config/config.exs b/config/config.exs index 599d8dce..24b87b37 100644 --- a/config/config.exs +++ b/config/config.exs @@ -24,12 +24,15 @@ config :music_library, MusicLibraryWeb.Endpoint, pubsub_server: MusicLibrary.PubSub, live_view: [signing_salt: "g/qw4SNo"] +user_agent = "MusicLibrary/0.1.0 ( cloud8421@gmail.com )" + config :music_library, LastFm, user: "username", api: LastFm.APIImpl, auto_refresh: true, refresh_interval: System.convert_time_unit(60, :second, :millisecond), - api_key: "change me" + api_key: "change me", + user_agent: user_agent # Configure esbuild (the version is required) config :esbuild, diff --git a/lib/last_fm/api_impl.ex b/lib/last_fm/api_impl.ex index 64669dd8..e71c81a3 100644 --- a/lib/last_fm/api_impl.ex +++ b/lib/last_fm/api_impl.ex @@ -30,7 +30,7 @@ defmodule LastFm.APIImpl do Logger.debug("Fetching data from #{sanitize_url(url, config.api_key)}") - case json_get(url) do + case json_get(url, config.user_agent) do {:ok, response} -> {:ok, response @@ -61,7 +61,7 @@ defmodule LastFm.APIImpl do Logger.debug("Fetching data from #{sanitize_url(url, config.api_key)}") - case json_get(url) do + case json_get(url, config.user_agent) do {:ok, response} -> {:ok, response @@ -77,11 +77,10 @@ defmodule LastFm.APIImpl do end end - defp json_get(url) do + defp json_get(url, user_agent) do req = Finch.build(:get, url, [ - # TODO: move user agent to config - {"User-Agent", "MusicLibrary/0.1.0 ( cloud8421@gmail.com )"} + {"User-Agent", user_agent} ]) case Finch.request(req, LastFm.Finch, @request_opts) do diff --git a/lib/last_fm/config.ex b/lib/last_fm/config.ex index f69bbf2f..83325a2f 100644 --- a/lib/last_fm/config.ex +++ b/lib/last_fm/config.ex @@ -4,14 +4,16 @@ defmodule LastFm.Config do api_key: String.t(), user: String.t(), auto_refresh: boolean(), - refresh_interval: pos_integer() + refresh_interval: pos_integer(), + user_agent: String.t() } defstruct api: LastFm.Api, api_key: "", user: "", auto_refresh: true, - refresh_interval: 60_000 + refresh_interval: 60_000, + user_agent: "change me" @spec resolve(atom) :: t def resolve(otp_app) do diff --git a/test/last_fm/config_test.exs b/test/last_fm/config_test.exs index 7ce88651..3cd479f1 100644 --- a/test/last_fm/config_test.exs +++ b/test/last_fm/config_test.exs @@ -8,12 +8,14 @@ defmodule LastFm.ConfigTest do api_key: api_key, user: user, auto_refresh: false, - refresh_interval: refresh_interval + refresh_interval: refresh_interval, + user_agent: user_agent } = LastFm.Config.resolve(:music_library) assert is_binary(api_key) assert is_binary(user) + assert is_binary(user_agent) assert is_integer(refresh_interval) end end