From 3c3f424cb4b130d611c225a2b55c26a53a0d0574 Mon Sep 17 00:00:00 2001 From: Fazzani Date: Sun, 29 Dec 2024 00:07:50 +0100 Subject: [PATCH] Some fixes --- src/Proxarr.Api/Configuration/AppConfiguration.cs | 15 +-------------- .../Configuration/ClientConfiguration.cs | 9 +++++++++ src/Proxarr.Api/Core/ApiKeyDelegatingHandler.cs | 15 +++++++++------ 3 files changed, 19 insertions(+), 20 deletions(-) diff --git a/src/Proxarr.Api/Configuration/AppConfiguration.cs b/src/Proxarr.Api/Configuration/AppConfiguration.cs index 8dfc460..1cfde81 100644 --- a/src/Proxarr.Api/Configuration/AppConfiguration.cs +++ b/src/Proxarr.Api/Configuration/AppConfiguration.cs @@ -12,7 +12,7 @@ public sealed class AppConfiguration public string FULL_SCAN_CRON { get; set; } = "0 6 * * 1"; - public List Clients { get; set; } + public List Clients { get; set; } private Dictionary _watchProviders; @@ -57,17 +57,4 @@ private Dictionary InitProviders() return dict; } } - - public sealed class ClientInstance - { - /// - /// The name of the application (Sonarr or Radarr) - /// - public required string Application { get; set; } - public required string BaseUrl { get; set; } - public required string ApiKey { get; set; } - - public bool IsSonarr => Application.Equals("Sonarr", StringComparison.OrdinalIgnoreCase); - public bool IsRadarr => Application.Equals("Radarr", StringComparison.OrdinalIgnoreCase); - } } diff --git a/src/Proxarr.Api/Configuration/ClientConfiguration.cs b/src/Proxarr.Api/Configuration/ClientConfiguration.cs index cfc475a..95af1dc 100644 --- a/src/Proxarr.Api/Configuration/ClientConfiguration.cs +++ b/src/Proxarr.Api/Configuration/ClientConfiguration.cs @@ -3,7 +3,16 @@ public sealed class ClientConfiguration { public const string SECTION_NAME = $"{AppConfiguration.SECTION_NAME}:Clients"; + + /// + /// Must be Sonarr or Radarr + /// + public required string Application { get; set; } public required string ApiKey { get; set; } public required string BaseUrl { get; set; } + + + public bool IsSonarr => Application.Equals("Sonarr", StringComparison.OrdinalIgnoreCase); + public bool IsRadarr => Application.Equals("Radarr", StringComparison.OrdinalIgnoreCase); } } diff --git a/src/Proxarr.Api/Core/ApiKeyDelegatingHandler.cs b/src/Proxarr.Api/Core/ApiKeyDelegatingHandler.cs index 8c6d48a..2aa5967 100644 --- a/src/Proxarr.Api/Core/ApiKeyDelegatingHandler.cs +++ b/src/Proxarr.Api/Core/ApiKeyDelegatingHandler.cs @@ -1,4 +1,5 @@ -using Proxarr.Api.Configuration; +using Microsoft.Extensions.Options; +using Proxarr.Api.Configuration; namespace Proxarr.Api.Core { @@ -6,11 +7,13 @@ public class ApiKeyDelegatingHandler : DelegatingHandler { private const string API_KEY_HEADER_NAME = "X-API-KEY"; - private readonly IConfiguration _configuration; + private readonly AppConfiguration _configuration; + private readonly ILogger _logger; - public ApiKeyDelegatingHandler(IConfiguration configuration) + public ApiKeyDelegatingHandler(IOptions configuration, ILogger logger) { - _configuration = configuration; + _configuration = configuration?.Value ?? throw new ArgumentNullException(nameof(configuration)); + _logger = logger; } protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) @@ -18,11 +21,11 @@ protected override async Task SendAsync(HttpRequestMessage if (!request.Headers.Contains(API_KEY_HEADER_NAME) && request.RequestUri != null) { var key = $"{request.RequestUri.Scheme}://{request.RequestUri.Host}"; - var clients = _configuration.GetSection(ClientConfiguration.SECTION_NAME).Get>(); - var clientConfig = clients?.FirstOrDefault(x => x.BaseUrl.Equals(key, StringComparison.OrdinalIgnoreCase)); + var clientConfig = _configuration.Clients?.FirstOrDefault(x => x.BaseUrl.Equals(key, StringComparison.OrdinalIgnoreCase)); if (clientConfig != null) { + _logger.LogInformation("Adding API Key to request for {BaseUrl}", clientConfig.BaseUrl); request.Headers.Add(API_KEY_HEADER_NAME, clientConfig.ApiKey); } }