Log retrycount and properly log request headers (#15390)
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Core.Webhooks;
|
||||
|
||||
namespace Umbraco.Cms.Core.Services;
|
||||
|
||||
@@ -15,20 +15,38 @@ public class WebhookLogFactory : IWebhookLogFactory
|
||||
Key = Guid.NewGuid(),
|
||||
Url = webhook.Url,
|
||||
WebhookKey = webhook.Key,
|
||||
RetryCount = responseModel.RetryCount,
|
||||
};
|
||||
|
||||
if (responseModel.HttpResponseMessage is not null)
|
||||
{
|
||||
log.RequestBody = await responseModel.HttpResponseMessage!.RequestMessage!.Content!.ReadAsStringAsync(cancellationToken);
|
||||
if (responseModel.HttpResponseMessage.RequestMessage?.Content is not null)
|
||||
{
|
||||
log.RequestBody = await responseModel.HttpResponseMessage.RequestMessage.Content.ReadAsStringAsync(cancellationToken);
|
||||
log.RequestHeaders = CalculateHeaders(responseModel.HttpResponseMessage);
|
||||
}
|
||||
|
||||
log.ResponseBody = await responseModel.HttpResponseMessage.Content.ReadAsStringAsync(cancellationToken);
|
||||
log.StatusCode = MapStatusCodeToMessage(responseModel.HttpResponseMessage.StatusCode);
|
||||
log.RetryCount = responseModel.RetryCount;
|
||||
log.ResponseHeaders = responseModel.HttpResponseMessage.Headers.ToString();
|
||||
log.RequestHeaders = responseModel.HttpResponseMessage.RequestMessage.Headers.ToString();
|
||||
log.StatusCode = MapStatusCodeToMessage(responseModel.HttpResponseMessage.StatusCode);
|
||||
}
|
||||
|
||||
return log;
|
||||
}
|
||||
|
||||
private string MapStatusCodeToMessage(HttpStatusCode statusCode) => $"{statusCode.ToString()} ({(int)statusCode})";
|
||||
|
||||
private string CalculateHeaders(HttpResponseMessage responseMessage)
|
||||
{
|
||||
IEnumerable<KeyValuePair<string, IEnumerable<string>>> headers = responseMessage.RequestMessage!.Headers.Concat(responseMessage.RequestMessage.Content!.Headers);
|
||||
|
||||
var result = new StringBuilder();
|
||||
|
||||
foreach (KeyValuePair<string, IEnumerable<string>> header in headers)
|
||||
{
|
||||
result.AppendLine($"{header.Key}: {string.Join(", ", header.Value)}\n");
|
||||
}
|
||||
|
||||
return result.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user