Added avalonia integration and remote proof of concept
This commit is contained in:
parent
775080a178
commit
4a0973b681
23 changed files with 2043 additions and 6 deletions
|
|
@ -0,0 +1,46 @@
|
|||
using System.Net;
|
||||
using Catalog.Communication.Abstractions;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.DependencyInjection.Extensions;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
namespace Catalog.Communication.DependencyInjection;
|
||||
|
||||
public static class CatalogCommunicationServiceCollectionExtensions
|
||||
{
|
||||
public static IServiceCollection AddCatalogCommunication(this IServiceCollection services, Action<CatalogCommunicationOptions> configure)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(services);
|
||||
ArgumentNullException.ThrowIfNull(configure);
|
||||
|
||||
services
|
||||
.AddOptions<CatalogCommunicationOptions>()
|
||||
.Configure(configure)
|
||||
.Validate(o => o.BaseUri is not null, "CatalogCommunicationOptions.BaseUri is required.")
|
||||
.Validate(o => !string.IsNullOrWhiteSpace(o.AdminPageBasePath), "AdminPageBasePath is required.")
|
||||
.Validate(o => o.RequestTimeout > TimeSpan.Zero, "RequestTimeout must be greater than zero.")
|
||||
.Validate(o => o.RetryCount >= 0 && o.RetryCount <= 10, "RetryCount must be between 0 and 10.")
|
||||
.Validate(o => o.RetryBaseDelay > TimeSpan.Zero, "RetryBaseDelay must be greater than zero.");
|
||||
|
||||
services.TryAddSingleton<CookieContainer>();
|
||||
|
||||
services
|
||||
.AddHttpClient<IRaceUploadCommunicationClient, RaceUploadCommunicationClient>((sp, client) =>
|
||||
{
|
||||
var options = sp.GetRequiredService<IOptions<CatalogCommunicationOptions>>().Value;
|
||||
client.BaseAddress = options.BaseUri;
|
||||
})
|
||||
.ConfigurePrimaryHttpMessageHandler(sp =>
|
||||
{
|
||||
var cookieContainer = sp.GetRequiredService<CookieContainer>();
|
||||
return new HttpClientHandler
|
||||
{
|
||||
UseCookies = true,
|
||||
CookieContainer = cookieContainer,
|
||||
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate | DecompressionMethods.Brotli,
|
||||
};
|
||||
});
|
||||
|
||||
return services;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue