Client web socket resolver (#47)

This commit is contained in:
2023-05-14 23:19:32 +02:00
committed by GitHub
parent de08c0e3b0
commit 2ed3de439e
11 changed files with 120 additions and 27 deletions
@@ -2,8 +2,6 @@
using Microsoft.Extensions.Options;
using Slim;
using System.Configuration;
using System.DependencyInjection.Http;
using System.Http;
using System.Logging;
using System.Net.Http;
@@ -1,9 +1,8 @@
using Slim;
using System.Extensions;
using System.Net.Http;
using System.Net.Http.Headers;
namespace System.DependencyInjection.Http;
namespace System.Net.Http;
public sealed class HttpClientBuilder<T>
{
@@ -1,8 +1,7 @@
using Slim.Resolvers;
using System.Linq;
using System.Net.Http;
namespace System.Http;
namespace System.Net.Http;
[Obsolete($"Please use {nameof(Extensions.ServiceManagerExtensions.RegisterHttpClient)} for each use case of {nameof(IHttpClient<object>)}")]
public sealed class HttpClientResolver : IDependencyResolver
@@ -6,7 +6,7 @@
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<LangVersion>latest</LangVersion>
<Version>1.2.3</Version>
<Version>1.3</Version>
<Authors>Alexandru Macocian</Authors>
<RepositoryUrl>https://github.com/AlexMacocian/SystemExtensions</RepositoryUrl>
<Description>Extensions for the Slim Dependency Injection engine</Description>
@@ -21,9 +21,9 @@
<ItemGroup>
<PackageReference Include="Microsoft.CorrelationVector" Version="1.0.42" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0" />
<PackageReference Include="Slim" Version="1.9.2" />
<PackageReference Include="SystemExtensions.NetStandard" Version="1.5.0" />
<PackageReference Include="SystemExtensions.NetStandard" Version="1.6.0" />
</ItemGroup>
</Project>
@@ -0,0 +1,27 @@
using Microsoft.Extensions.Logging;
namespace System.Net.WebSockets;
public sealed class ClientWebSocketResolver
{
private static readonly Type ClientType = typeof(ClientWebSocket<>);
private static readonly Type LoggerType = typeof(ILogger<>);
public bool CanResolve(Type type)
{
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(IClientWebSocket<>))
{
return true;
}
return false;
}
public object Resolve(Slim.IServiceProvider serviceProvider, Type type)
{
var typedClientType = ClientType.MakeGenericType(type.GetGenericArguments());
var typedLoggerType = LoggerType.MakeGenericType(type.GetGenericArguments());
var logger = serviceProvider.GetService(typedLoggerType);
var client = Activator.CreateInstance(typedClientType, new object[] { logger });
return client;
}
}