Skip to content

Commit 3936bed

Browse files
committed
Add LogRequest()
1 parent 3a38f8d commit 3936bed

File tree

5 files changed

+69
-27
lines changed

5 files changed

+69
-27
lines changed

IPPDotNetDevKitCSV3/Code/Intuit.Ipp.OAuth2PlatformClient.Diagnostics/IOAuthLogger.cs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
// <summary>This file contains an interface for Logging.</summary>
1919
////*********************************************************
2020

21+
using System.Diagnostics;
22+
using System.Net.Http;
23+
2124
namespace Intuit.Ipp.OAuth2PlatformClient.Diagnostics
2225
{
2326
/// <summary>
@@ -30,6 +33,25 @@ public interface IOAuthLogger
3033
/// </summary>
3134
/// <param name="message">The message.</param>
3235
void Log(string message);
36+
37+
/// <summary>
38+
/// Log HTTP request path and headers.
39+
/// </summary>
40+
/// <param name="httpClient">The <see cref="HttpClient"/> that will send the request, which might specify <see cref="HttpClient.DefaultRequestHeaders"/>.</param>
41+
/// <param name="request">The <see cref="HttpRequestMessage"/>.</param>
42+
void LogRequest(HttpClient httpClient, HttpRequestMessage request);
43+
44+
/// <summary>
45+
/// Determines if the request body should be read and logged.
46+
/// </summary>
47+
/// <returns><see langword="true"/> if the body should be logged.</returns>
48+
bool ShouldLogRequestBody();
49+
50+
/// <summary>
51+
/// Log HTTP request body.
52+
/// </summary>
53+
/// <param name="body">The request body.</param>
54+
void LogRequestBody(string body);
3355
}
3456

3557
/// <summary>
@@ -49,5 +71,18 @@ private NullOAuthLogger()
4971
void IOAuthLogger.Log(string messageToWrite)
5072
{
5173
}
74+
75+
void IOAuthLogger.LogRequest(HttpClient httpClient, HttpRequestMessage request)
76+
{
77+
}
78+
79+
bool IOAuthLogger.ShouldLogRequestBody()
80+
{
81+
return false;
82+
}
83+
84+
void IOAuthLogger.LogRequestBody(string body)
85+
{
86+
}
5287
}
5388
}

IPPDotNetDevKitCSV3/Code/Intuit.Ipp.OAuth2PlatformClient.Diagnostics/OAuthAdvancedLogging.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ namespace Intuit.Ipp.OAuth2PlatformClient.Diagnostics
2727
using Serilog.Core;
2828
using Serilog.Events;
2929
using System.Globalization;
30+
using System.Net.Http;
3031

3132
/// <summary>
3233
/// Contains properties used to indicate whether request and response messages are to be logged.
@@ -245,5 +246,26 @@ public void Log(string messageToWrite)
245246
{
246247
logger.Write(LogEventLevel.Information, messageToWrite);
247248
}
249+
250+
void IOAuthLogger.LogRequest(HttpClient httpClient, HttpRequestMessage request)
251+
{
252+
logger.Write(LogEventLevel.Information, "Request url- " + request.RequestUri);
253+
logger.Write(LogEventLevel.Debug, "Request headers- ");
254+
var authorization = request.Headers.Authorization ?? httpClient.DefaultRequestHeaders.Authorization;
255+
logger.Write(LogEventLevel.Debug, "Authorization Header: " + authorization);
256+
logger.Write(LogEventLevel.Debug, "ContentType header: " + request.Content.Headers.ContentType);
257+
var accept = request.Headers.Accept ?? httpClient.DefaultRequestHeaders.Accept;
258+
logger.Write(LogEventLevel.Debug, "Accept header: " + accept);
259+
}
260+
261+
bool IOAuthLogger.ShouldLogRequestBody()
262+
{
263+
return logger.IsEnabled(LogEventLevel.Verbose);
264+
}
265+
266+
void IOAuthLogger.LogRequestBody(string body)
267+
{
268+
logger.Write(LogEventLevel.Verbose, "Request Body: " + body);
269+
}
248270
}
249271
}

IPPDotNetDevKitCSV3/Code/Intuit.Ipp.OAuth2PlatformClient/Client/TokenClient.cs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -157,15 +157,13 @@ public TimeSpan Timeout
157157
request.Content.Headers.ContentType = new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded");
158158
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
159159
}
160-
if (OAuth2Client.AdvancedLoggerEnabled != false)
160+
161+
Logger.LogRequest(Client, request);
162+
if (Logger.ShouldLogRequestBody())
161163
{
162-
OAuth2Client.AdvancedLogger.Log("Request url- " + Address);
163-
OAuth2Client.AdvancedLogger.Log("Request headers- ");
164-
OAuth2Client.AdvancedLogger.Log("Authorization Header: " + request.Headers.Authorization.ToString());
165-
OAuth2Client.AdvancedLogger.Log("ContentType header: " + request.Content.Headers.ContentType.ToString());
166-
OAuth2Client.AdvancedLogger.Log("Accept header: " + "application/json");
167-
OAuth2Client.AdvancedLogger.Log("Request Body: " + await request.Content.ReadAsStringAsync().ConfigureAwait(false));
164+
Logger.LogRequestBody(await request.Content.ReadAsStringAsync().ConfigureAwait(false));
168165
}
166+
169167
try
170168
{
171169
response = await Client.SendAsync(request, cancellationToken).ConfigureAwait(false);

IPPDotNetDevKitCSV3/Code/Intuit.Ipp.OAuth2PlatformClient/Client/TokenRevocationClient.cs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -136,19 +136,15 @@ public virtual async Task<TokenRevocationResponse> RevokeAsync(
136136

137137
msgRequest.Content = stringContent;
138138

139-
if (OAuth2Client.AdvancedLoggerEnabled != false)
139+
Logger.LogRequest(Client, msgRequest);
140+
if (Logger.ShouldLogRequestBody())
140141
{
141-
OAuth2Client.AdvancedLogger.Log("Request url- " + Address);
142-
OAuth2Client.AdvancedLogger.Log("Request headers- ");
143-
OAuth2Client.AdvancedLogger.Log("Authorization Header: " + Client.DefaultRequestHeaders.Authorization.ToString());//check
144-
OAuth2Client.AdvancedLogger.Log("ContentType header: " + "application/json");
145-
OAuth2Client.AdvancedLogger.Log("Accept header: " + "application/json");
146-
OAuth2Client.AdvancedLogger.Log("Request Body: " + await msgRequest.Content.ReadAsStringAsync().ConfigureAwait(false));
142+
Logger.LogRequestBody(await msgRequest.Content.ReadAsStringAsync().ConfigureAwait(false));
147143
}
148144

149145
try
150146
{
151-
var response = await Client.PostAsync("", msgRequest.Content).ConfigureAwait(false);
147+
var response = await Client.SendAsync(msgRequest).ConfigureAwait(false);
152148
HttpResponseHeaders headers = response.Headers;
153149

154150

IPPDotNetDevKitCSV3/Code/Intuit.Ipp.OAuth2PlatformClient/Client/UserInfoClient.cs

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,6 @@ public UserInfoClient(string endpoint, HttpMessageHandler innerHttpMessageHandle
5454
_client.DefaultRequestHeaders.Accept.Add(
5555
new MediaTypeWithQualityHeaderValue("application/json"));
5656
_client.DefaultRequestHeaders.Add("Connection", "close");
57-
58-
if (OAuth2Client.AdvancedLoggerEnabled != false)
59-
{
60-
OAuth2Client.AdvancedLogger.Log("UserInfo request initiated");
61-
OAuth2Client.AdvancedLogger.Log("Request url- " + endpoint);
62-
}
6357
}
6458

6559
private IOAuthLogger logger;
@@ -102,15 +96,12 @@ public TimeSpan Timeout
10296
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
10397
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
10498

105-
if (OAuth2Client.AdvancedLoggerEnabled != false)
99+
Logger.LogRequest(_client, request);
100+
if (Logger.ShouldLogRequestBody())
106101
{
107-
OAuth2Client.AdvancedLogger.Log("Request headers- ");
108-
OAuth2Client.AdvancedLogger.Log("Authorization Header: " + request.Headers.Authorization.ToString());
109-
110-
OAuth2Client.AdvancedLogger.Log("Accept header: " + "application/json");
102+
Logger.LogRequestBody(await request.Content.ReadAsStringAsync().ConfigureAwait(false));
111103
}
112104

113-
114105
HttpResponseMessage response;
115106
try
116107
{

0 commit comments

Comments
 (0)