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.
58 lines
1.8 KiB
58 lines
1.8 KiB
10 months ago
|
using System.Diagnostics.CodeAnalysis;
|
||
1 year ago
|
using Flurl;
|
||
2 years ago
|
using Flurl.Http;
|
||
|
using Flurl.Http.Configuration;
|
||
12 months ago
|
using Recyclarr.Config.Models;
|
||
6 months ago
|
using Recyclarr.Http;
|
||
10 months ago
|
using Recyclarr.Json;
|
||
|
using Recyclarr.Settings;
|
||
|
using Serilog;
|
||
2 years ago
|
|
||
6 months ago
|
namespace Recyclarr.ServarrApi;
|
||
2 years ago
|
|
||
10 months ago
|
public class ServarrRequestBuilder(
|
||
|
ILogger log,
|
||
|
IFlurlClientCache clientCache,
|
||
10 months ago
|
ISettingsProvider settingsProvider,
|
||
|
IEnumerable<FlurlSpecificEventHandler> eventHandlers)
|
||
10 months ago
|
: IServarrRequestBuilder
|
||
2 years ago
|
{
|
||
12 months ago
|
public IFlurlRequest Request(IServiceConfiguration config, params object[] path)
|
||
2 years ago
|
{
|
||
10 months ago
|
var client = clientCache.GetOrAdd(
|
||
|
config.InstanceName,
|
||
|
config.BaseUrl.AppendPathSegments("api", "v3"),
|
||
|
Configure);
|
||
|
|
||
12 months ago
|
return client.Request(path)
|
||
|
.WithHeader("X-Api-Key", config.ApiKey);
|
||
2 years ago
|
}
|
||
10 months ago
|
|
||
|
[SuppressMessage("SonarCloud", "S4830:Server certificates should be verified during SSL/TLS connections")]
|
||
|
[SuppressMessage("Security", "CA5359:Do Not Disable Certificate Validation")]
|
||
|
private void Configure(IFlurlClientBuilder builder)
|
||
|
{
|
||
10 months ago
|
foreach (var handler in eventHandlers.Select(x => (x.EventType, x)))
|
||
|
{
|
||
|
builder.EventHandlers.Add(handler);
|
||
|
}
|
||
|
|
||
10 months ago
|
builder.WithSettings(settings =>
|
||
|
{
|
||
|
settings.JsonSerializer = new DefaultJsonSerializer(GlobalJsonSerializerSettings.Services);
|
||
|
});
|
||
|
|
||
|
builder.ConfigureInnerHandler(handler =>
|
||
|
{
|
||
|
if (!settingsProvider.Settings.EnableSslCertificateValidation)
|
||
|
{
|
||
|
log.Warning(
|
||
|
"Security Risk: Certificate validation is being DISABLED because setting " +
|
||
|
"`enable_ssl_certificate_validation` is set to `false`");
|
||
|
|
||
|
handler.ServerCertificateCustomValidationCallback = (_, _, _, _) => true;
|
||
|
}
|
||
|
});
|
||
|
}
|
||
2 years ago
|
}
|