From 394f16eb1e124790c7dc78ac6b757d7ac8f4ff19 Mon Sep 17 00:00:00 2001 From: Magnus Nilsson Date: Wed, 27 Mar 2019 15:14:57 +0100 Subject: [PATCH] Include request/response content in info logging --- .../Infrastructure/HttpMessageSender.cs | 50 +++++++++++-------- src/Tests/Sending/When_sending_requests.cs | 4 +- 2 files changed, 30 insertions(+), 24 deletions(-) diff --git a/src/Castle.Sdk/Infrastructure/HttpMessageSender.cs b/src/Castle.Sdk/Infrastructure/HttpMessageSender.cs index b84350c..e63feb5 100644 --- a/src/Castle.Sdk/Infrastructure/HttpMessageSender.cs +++ b/src/Castle.Sdk/Infrastructure/HttpMessageSender.cs @@ -42,54 +42,60 @@ internal class HttpMessageSender : IMessageSender public async Task Post(string endpoint, object payload) where TResponse : class, new() { - var jsonContent = payload.ToHttpContent(); - var message = new HttpRequestMessage(HttpMethod.Post, endpoint) - { - Content = jsonContent - }; - - return await SendRequest(message); + return await SendRequest(HttpMethod.Post, endpoint, payload); } public async Task Get(string endpoint) where TResponse : class, new() { - var message = new HttpRequestMessage(HttpMethod.Get, endpoint); - return await SendRequest(message); + return await SendRequest(HttpMethod.Get, endpoint); } public async Task Put(string endpoint) where TResponse : class, new() { - var message = new HttpRequestMessage(HttpMethod.Put, endpoint); - return await SendRequest(message); + return await SendRequest(HttpMethod.Put, endpoint); } public async Task Delete(string endpoint, object payload) where TResponse : class, new() { - var jsonContent = payload.ToHttpContent(); - var message = new HttpRequestMessage(HttpMethod.Delete, endpoint) - { - Content = jsonContent - }; - return await SendRequest(message); + return await SendRequest(HttpMethod.Delete, endpoint, payload); } - private async Task SendRequest(HttpRequestMessage requestMessage) + private async Task SendRequest(HttpMethod method, string endpoint, object payload = null) where TResponse : class, new() { - try + var jsonContent = payload != null ? payload.ToHttpContent() : null; + var requestMessage = new HttpRequestMessage(method, endpoint) { - _logger.Info(() => "Sending, " + requestMessage); + Content = jsonContent + }; + _logger.Info(() => string.Concat( + "Request", + Environment.NewLine, + requestMessage, + Environment.NewLine, + payload != null ? JsonForCastle.SerializeObject(payload) : "" + )); + + try + { var response = await _httpClient.SendAsync(requestMessage); - _logger.Info(() => "Receiving, " + response); + var content = response.Content != null ? await response.Content.ReadAsStringAsync() : ""; + + _logger.Info(() => string.Concat( + "Response", + Environment.NewLine, + response, + Environment.NewLine, + content + )); if (response.IsSuccessStatusCode) { - var content = await response.Content.ReadAsStringAsync(); return JsonForCastle.DeserializeObject(content); } diff --git a/src/Tests/Sending/When_sending_requests.cs b/src/Tests/Sending/When_sending_requests.cs index 2351345..fa5d4ff 100644 --- a/src/Tests/Sending/When_sending_requests.cs +++ b/src/Tests/Sending/When_sending_requests.cs @@ -28,7 +28,7 @@ public class When_sending_requests logger .Received() .Info(Arg.Is>(func => func() - .StartsWith("Sending"))); + .StartsWith("Request"))); } } @@ -46,7 +46,7 @@ public class When_sending_requests logger .Received() .Info(Arg.Is>(func => func() - .StartsWith("Receiving"))); + .StartsWith("Response"))); } }