Parameterize API cooldowns
This commit is contained in:
+7
-3
@@ -52,11 +52,15 @@ config :music_library, LastFm,
|
|||||||
refresh_interval: System.convert_time_unit(300, :second, :millisecond),
|
refresh_interval: System.convert_time_unit(300, :second, :millisecond),
|
||||||
api_key: "change me",
|
api_key: "change me",
|
||||||
shared_secret: "change me",
|
shared_secret: "change me",
|
||||||
user_agent: user_agent
|
user_agent: user_agent,
|
||||||
|
api_cooldown: 500
|
||||||
|
|
||||||
config :music_library, MusicBrainz, user_agent: user_agent
|
config :music_library, MusicBrainz, user_agent: user_agent, api_cooldown: 500
|
||||||
|
|
||||||
config :music_library, Discogs, personal_access_token: "change me", user_agent: user_agent
|
config :music_library, Discogs,
|
||||||
|
personal_access_token: "change me",
|
||||||
|
user_agent: user_agent,
|
||||||
|
api_cooldown: 1000
|
||||||
|
|
||||||
config :music_library, Wikipedia, user_agent: user_agent
|
config :music_library, Wikipedia, user_agent: user_agent
|
||||||
|
|
||||||
|
|||||||
+6
-3
@@ -43,19 +43,22 @@ config :music_library, LastFm,
|
|||||||
req_options: [
|
req_options: [
|
||||||
plug: {Req.Test, LastFm.API},
|
plug: {Req.Test, LastFm.API},
|
||||||
max_retries: 0
|
max_retries: 0
|
||||||
]
|
],
|
||||||
|
api_cooldown: 0
|
||||||
|
|
||||||
config :music_library, MusicBrainz,
|
config :music_library, MusicBrainz,
|
||||||
req_options: [
|
req_options: [
|
||||||
plug: {Req.Test, MusicBrainz.API},
|
plug: {Req.Test, MusicBrainz.API},
|
||||||
max_retries: 0
|
max_retries: 0
|
||||||
]
|
],
|
||||||
|
api_cooldown: 0
|
||||||
|
|
||||||
config :music_library, Discogs,
|
config :music_library, Discogs,
|
||||||
req_options: [
|
req_options: [
|
||||||
plug: {Req.Test, Discogs.API},
|
plug: {Req.Test, Discogs.API},
|
||||||
max_retries: 0
|
max_retries: 0
|
||||||
]
|
],
|
||||||
|
api_cooldown: 0
|
||||||
|
|
||||||
config :music_library, Wikipedia,
|
config :music_library, Wikipedia,
|
||||||
req_options: [
|
req_options: [
|
||||||
|
|||||||
@@ -13,5 +13,7 @@ defmodule Discogs do
|
|||||||
API.get_artist_image(url, discogs_config)
|
API.get_artist_image(url, discogs_config)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def api_cooldown, do: discogs_config().api_cooldown
|
||||||
|
|
||||||
defp discogs_config, do: Discogs.Config.resolve(:music_library)
|
defp discogs_config, do: Discogs.Config.resolve(:music_library)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -2,13 +2,15 @@ defmodule Discogs.Config do
|
|||||||
@type t :: %__MODULE__{
|
@type t :: %__MODULE__{
|
||||||
personal_access_token: String.t(),
|
personal_access_token: String.t(),
|
||||||
user_agent: String.t(),
|
user_agent: String.t(),
|
||||||
req_options: Keyword.t()
|
req_options: Keyword.t(),
|
||||||
|
api_cooldown: non_neg_integer()
|
||||||
}
|
}
|
||||||
|
|
||||||
@enforce_keys [:personal_access_token]
|
@enforce_keys [:personal_access_token]
|
||||||
defstruct personal_access_token: "",
|
defstruct personal_access_token: "",
|
||||||
user_agent: "change me",
|
user_agent: "change me",
|
||||||
req_options: []
|
req_options: [],
|
||||||
|
api_cooldown: 1000
|
||||||
|
|
||||||
@schema NimbleOptions.new!(
|
@schema NimbleOptions.new!(
|
||||||
personal_access_token: [
|
personal_access_token: [
|
||||||
@@ -24,6 +26,11 @@ defmodule Discogs.Config do
|
|||||||
type: :keyword_list,
|
type: :keyword_list,
|
||||||
required: false,
|
required: false,
|
||||||
default: []
|
default: []
|
||||||
|
],
|
||||||
|
api_cooldown: [
|
||||||
|
type: :integer,
|
||||||
|
required: false,
|
||||||
|
default: 1000
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -93,5 +93,7 @@ defmodule LastFm do
|
|||||||
"https://www.last.fm/api/auth/?api_key=" <> last_fm_config.api_key
|
"https://www.last.fm/api/auth/?api_key=" <> last_fm_config.api_key
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def api_cooldown, do: last_fm_config().api_cooldown
|
||||||
|
|
||||||
defp last_fm_config, do: LastFm.Config.resolve(:music_library)
|
defp last_fm_config, do: LastFm.Config.resolve(:music_library)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ defmodule LastFm.Config do
|
|||||||
auto_refresh: boolean(),
|
auto_refresh: boolean(),
|
||||||
refresh_interval: pos_integer(),
|
refresh_interval: pos_integer(),
|
||||||
user_agent: String.t(),
|
user_agent: String.t(),
|
||||||
req_options: Keyword.t()
|
req_options: Keyword.t(),
|
||||||
|
api_cooldown: non_neg_integer()
|
||||||
}
|
}
|
||||||
|
|
||||||
@enforce_keys [:api_key, :user]
|
@enforce_keys [:api_key, :user]
|
||||||
@@ -16,7 +17,8 @@ defmodule LastFm.Config do
|
|||||||
auto_refresh: true,
|
auto_refresh: true,
|
||||||
refresh_interval: 60_000,
|
refresh_interval: 60_000,
|
||||||
user_agent: "change me",
|
user_agent: "change me",
|
||||||
req_options: []
|
req_options: [],
|
||||||
|
api_cooldown: 500
|
||||||
|
|
||||||
@schema NimbleOptions.new!(
|
@schema NimbleOptions.new!(
|
||||||
api_key: [
|
api_key: [
|
||||||
@@ -50,6 +52,11 @@ defmodule LastFm.Config do
|
|||||||
type: :keyword_list,
|
type: :keyword_list,
|
||||||
required: false,
|
required: false,
|
||||||
default: []
|
default: []
|
||||||
|
],
|
||||||
|
api_cooldown: [
|
||||||
|
type: :integer,
|
||||||
|
required: false,
|
||||||
|
default: 500
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -36,5 +36,7 @@ defmodule MusicBrainz do
|
|||||||
API.get_artist(musicbrainz_id, music_brainz_config())
|
API.get_artist(musicbrainz_id, music_brainz_config())
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def api_cooldown, do: music_brainz_config().api_cooldown
|
||||||
|
|
||||||
defp music_brainz_config, do: MusicBrainz.Config.resolve(:music_library)
|
defp music_brainz_config, do: MusicBrainz.Config.resolve(:music_library)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
defmodule MusicBrainz.Config do
|
defmodule MusicBrainz.Config do
|
||||||
@type t :: %__MODULE__{
|
@type t :: %__MODULE__{
|
||||||
user_agent: String.t(),
|
user_agent: String.t(),
|
||||||
req_options: Keyword.t()
|
req_options: Keyword.t(),
|
||||||
|
api_cooldown: non_neg_integer()
|
||||||
}
|
}
|
||||||
|
|
||||||
@enforce_keys [:user_agent]
|
@enforce_keys [:user_agent]
|
||||||
defstruct user_agent: "change me",
|
defstruct user_agent: "change me",
|
||||||
req_options: []
|
req_options: [],
|
||||||
|
api_cooldown: 500
|
||||||
|
|
||||||
@schema NimbleOptions.new!(
|
@schema NimbleOptions.new!(
|
||||||
user_agent: [
|
user_agent: [
|
||||||
@@ -18,6 +20,11 @@ defmodule MusicBrainz.Config do
|
|||||||
type: :keyword_list,
|
type: :keyword_list,
|
||||||
required: false,
|
required: false,
|
||||||
default: []
|
default: []
|
||||||
|
],
|
||||||
|
api_cooldown: [
|
||||||
|
type: :integer,
|
||||||
|
required: false,
|
||||||
|
default: 500
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ defmodule MusicLibrary.Worker.ArtistRefreshDiscogsData do
|
|||||||
def perform(%Oban.Job{args: %{"id" => artist_info_id}}) do
|
def perform(%Oban.Job{args: %{"id" => artist_info_id}}) do
|
||||||
result = MusicLibrary.Artists.refresh_discogs_data(artist_info_id)
|
result = MusicLibrary.Artists.refresh_discogs_data(artist_info_id)
|
||||||
|
|
||||||
Process.sleep(1_000)
|
Process.sleep(Discogs.api_cooldown())
|
||||||
|
|
||||||
result
|
result
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ defmodule MusicLibrary.Worker.ArtistRefreshMusicBrainzData do
|
|||||||
def perform(%Oban.Job{args: %{"id" => artist_info_id}}) do
|
def perform(%Oban.Job{args: %{"id" => artist_info_id}}) do
|
||||||
result = MusicLibrary.Artists.refresh_musicbrainz_data(artist_info_id)
|
result = MusicLibrary.Artists.refresh_musicbrainz_data(artist_info_id)
|
||||||
|
|
||||||
Process.sleep(500)
|
Process.sleep(MusicBrainz.api_cooldown())
|
||||||
|
|
||||||
result
|
result
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ defmodule MusicLibrary.Worker.FetchArtistLastFmData do
|
|||||||
error -> error
|
error -> error
|
||||||
end
|
end
|
||||||
|
|
||||||
Process.sleep(500)
|
Process.sleep(LastFm.api_cooldown())
|
||||||
|
|
||||||
result
|
result
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ defmodule MusicLibrary.Worker.RecordRefreshMusicBrainzData do
|
|||||||
MusicLibrary.Records.notify_update(updated_record)
|
MusicLibrary.Records.notify_update(updated_record)
|
||||||
end
|
end
|
||||||
|
|
||||||
Process.sleep(500)
|
Process.sleep(MusicBrainz.api_cooldown())
|
||||||
|
|
||||||
result
|
result
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user