mirror of
https://github.com/AlexMacocian/WpfExtended.git
synced 2026-07-15 14:59:30 +00:00
Implement http message handler factory to generate httpmessagehandler for each IHttpClient.
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System.Extensions;
|
||||
using System.Net.Http;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace WpfExtended.Tests.Http
|
||||
{
|
||||
public class HttpMessageLogger : DelegatingHandler
|
||||
{
|
||||
private readonly ILogger logger;
|
||||
public HttpMessageLogger(ILogger logger, HttpMessageHandler innerHandler) : base(innerHandler)
|
||||
{
|
||||
this.logger = logger.ThrowIfNull(nameof(logger));
|
||||
}
|
||||
|
||||
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
|
||||
{
|
||||
this.logger.LogInformation($"{request.Method} - {request.RequestUri}");
|
||||
var response = await base.SendAsync(request, cancellationToken);
|
||||
this.logger.LogInformation($"{response.RequestMessage.RequestUri} - {response.StatusCode}");
|
||||
return response;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,13 @@
|
||||
using Slim;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Slim;
|
||||
using System;
|
||||
using System.Extensions;
|
||||
using System.Http;
|
||||
using System.Net.Http;
|
||||
using System.Windows.Extensions;
|
||||
using System.Windows.Extensions.Http;
|
||||
using WpfExtended.Test;
|
||||
using WpfExtended.Tests.Http;
|
||||
|
||||
namespace WpfExtended.Tests
|
||||
{
|
||||
@@ -15,6 +21,18 @@ namespace WpfExtended.Tests
|
||||
return Instance.Run();
|
||||
}
|
||||
|
||||
protected override void SetupServiceManager(IServiceManager serviceManager)
|
||||
{
|
||||
serviceManager.RegisterResolver(
|
||||
new HttpClientResolver()
|
||||
.WithHttpMessageHandlerFactory((sp, category) =>
|
||||
{
|
||||
var loggerType = typeof(ILogger<>).MakeGenericType(category);
|
||||
var logger = sp.GetService(loggerType).As<ILogger>();
|
||||
return new HttpMessageLogger(logger, new HttpClientHandler());
|
||||
}));
|
||||
}
|
||||
|
||||
protected override void ApplicationClosing()
|
||||
{
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user