diff --git a/internal/cfg/cfg.go b/internal/cfg/cfg.go index 9ead211..16580f7 100644 --- a/internal/cfg/cfg.go +++ b/internal/cfg/cfg.go @@ -23,6 +23,7 @@ const ( ENABLE_FULL_IMAGE_CACHE_ENV = "KOITO_ENABLE_FULL_IMAGE_CACHE" LOG_LEVEL_ENV = "KOITO_LOG_LEVEL" MUSICBRAINZ_URL_ENV = "KOITO_MUSICBRAINZ_URL" + MUSICBRAINZ_RATE_LIMIT_ENV = "KOITO_MUSICBRAINZ_RATE_LIMIT" ENABLE_LBZ_RELAY_ENV = "KOITO_ENABLE_LBZ_RELAY" LBZ_RELAY_URL_ENV = "KOITO_LBZ_RELAY_URL" LBZ_RELAY_TOKEN_ENV = "KOITO_LBZ_RELAY_TOKEN" @@ -45,6 +46,7 @@ type config struct { // baseUrl string databaseUrl string musicBrainzUrl string + musicBrainzRateLimit int logLevel int structuredLogging bool enableFullImageCache bool @@ -95,6 +97,10 @@ func loadConfig(getenv func(string) string) (*config, error) { if err != nil { cfg.listenPort = defaultListenPort } + cfg.musicBrainzRateLimit, err = strconv.Atoi(getenv(MUSICBRAINZ_RATE_LIMIT_ENV)) + if err != nil { + cfg.musicBrainzRateLimit = 1 + } cfg.musicBrainzUrl = getenv(MUSICBRAINZ_URL_ENV) if cfg.musicBrainzUrl == "" { cfg.musicBrainzUrl = defaultMusicBrainzUrl @@ -192,6 +198,12 @@ func MusicBrainzUrl() string { return globalConfig.musicBrainzUrl } +func MusicBrainzRateLimit() int { + lock.RLock() + defer lock.RUnlock() + return globalConfig.musicBrainzRateLimit +} + func LogLevel() int { lock.RLock() defer lock.RUnlock() diff --git a/internal/mbz/mbz.go b/internal/mbz/mbz.go index 1be396a..de53d6d 100644 --- a/internal/mbz/mbz.go +++ b/internal/mbz/mbz.go @@ -38,7 +38,7 @@ func NewMusicBrainzClient() *MusicBrainzClient { ret := new(MusicBrainzClient) ret.url = cfg.MusicBrainzUrl() ret.userAgent = "Koito/0.0.1 (contact@koito.app)" - ret.requestQueue = queue.NewRequestQueue(1, 1) + ret.requestQueue = queue.NewRequestQueue(cfg.MusicBrainzRateLimit(), cfg.MusicBrainzRateLimit()) return ret }