using System.Net.Http; using System.Threading; using System.Threading.Tasks; using Microsoft.Extensions.Logging; namespace Novaloop.PaymoApi.Shared { public class PaymoLoggingHandler : DelegatingHandler { private readonly ILogger _logger; public PaymoLoggingHandler(ILogger logger) { _logger = logger; } public PaymoLoggingHandler(HttpMessageHandler innerHandler, ILogger logger) : base(innerHandler) { _logger = logger; } protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { _logger.LogDebug($"Request:\n{request}"); if (request.Content != null) { var body = await request.Content.ReadAsStringAsync(); _logger.LogDebug(body); } var response = await base.SendAsync(request, cancellationToken); _logger.LogDebug($"Response:\n{response}"); if (response.Content != null) { var body = await response.Content.ReadAsStringAsync(); _logger.LogDebug(body); } return response; } } }