50 lines
2.0 KiB
C#
50 lines
2.0 KiB
C#
using System;
|
|
using System.Net;
|
|
using System.Net.Http;
|
|
using Microsoft.Extensions.Caching.Memory;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.DependencyInjection.Extensions;
|
|
using StellaOps.Excititor.Connectors.Abstractions;
|
|
using StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Authentication;
|
|
using StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Configuration;
|
|
using StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.Metadata;
|
|
using StellaOps.Excititor.Core;
|
|
using System.IO.Abstractions;
|
|
|
|
namespace StellaOps.Excititor.Connectors.SUSE.RancherVEXHub.DependencyInjection;
|
|
|
|
public static class RancherHubConnectorServiceCollectionExtensions
|
|
{
|
|
public static IServiceCollection AddRancherHubConnector(this IServiceCollection services, Action<RancherHubConnectorOptions>? configure = null)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(services);
|
|
|
|
services.TryAddSingleton<IMemoryCache, MemoryCache>();
|
|
services.TryAddSingleton<IFileSystem, FileSystem>();
|
|
|
|
services.AddOptions<RancherHubConnectorOptions>()
|
|
.Configure(options =>
|
|
{
|
|
configure?.Invoke(options);
|
|
});
|
|
|
|
services.AddSingleton<IVexConnectorOptionsValidator<RancherHubConnectorOptions>, RancherHubConnectorOptionsValidator>();
|
|
services.AddSingleton<RancherHubTokenProvider>();
|
|
services.AddSingleton<RancherHubMetadataLoader>();
|
|
services.AddSingleton<IVexConnector, RancherHubConnector>();
|
|
|
|
services.AddHttpClient(RancherHubConnectorOptions.HttpClientName, client =>
|
|
{
|
|
client.Timeout = TimeSpan.FromSeconds(30);
|
|
client.DefaultRequestHeaders.UserAgent.ParseAdd("StellaOps.Excititor.Connectors.SUSE.RancherVEXHub/1.0");
|
|
client.DefaultRequestHeaders.Accept.ParseAdd("application/json");
|
|
})
|
|
.ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
|
|
{
|
|
AutomaticDecompression = DecompressionMethods.All,
|
|
});
|
|
|
|
return services;
|
|
}
|
|
}
|