You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.7 KiB
54 lines
1.7 KiB
using Flurl;
|
|
using Flurl.Http;
|
|
using Flurl.Http.Configuration;
|
|
using Recyclarr.Common.Networking;
|
|
using Recyclarr.Config.Models;
|
|
using Recyclarr.Json;
|
|
using Recyclarr.Settings;
|
|
using Serilog;
|
|
|
|
namespace Recyclarr.ServarrApi.Http;
|
|
|
|
public class ServarrRequestBuilder : IServarrRequestBuilder
|
|
{
|
|
private readonly ILogger _log;
|
|
private readonly ISettingsProvider _settingsProvider;
|
|
private readonly IFlurlClientFactory _clientFactory;
|
|
|
|
public ServarrRequestBuilder(ILogger log, ISettingsProvider settingsProvider, IFlurlClientFactory clientFactory)
|
|
{
|
|
_log = log;
|
|
_settingsProvider = settingsProvider;
|
|
_clientFactory = clientFactory;
|
|
}
|
|
|
|
public IFlurlRequest Request(IServiceConfiguration config, params object[] path)
|
|
{
|
|
var client = _clientFactory.Get(config.BaseUrl.AppendPathSegments("api", "v3"));
|
|
client.Settings = GetClientSettings();
|
|
return client.Request(path)
|
|
.WithHeader("X-Api-Key", config.ApiKey);
|
|
}
|
|
|
|
private ClientFlurlHttpSettings GetClientSettings()
|
|
{
|
|
var settings = new ClientFlurlHttpSettings
|
|
{
|
|
JsonSerializer = new DefaultJsonSerializer(GlobalJsonSerializerSettings.Services)
|
|
};
|
|
|
|
FlurlLogging.SetupLogging(settings, _log);
|
|
|
|
// ReSharper disable once InvertIf
|
|
if (!_settingsProvider.Settings.EnableSslCertificateValidation)
|
|
{
|
|
_log.Warning(
|
|
"Security Risk: Certificate validation is being DISABLED because setting " +
|
|
"`enable_ssl_certificate_validation` is set to `false`");
|
|
settings.HttpClientFactory = new UntrustedCertClientFactory();
|
|
}
|
|
|
|
return settings;
|
|
}
|
|
}
|