Files
Umbraco-CMS/src/Umbraco.Core/Services/WebhookLogFactory.cs
Nikolaj Geisle 4c3b4752db V13: Change WebhookLog status for clarity (#15247)
* Refactor to show icon and status code to make status more clear

* Fix up migration

* Add change log status migration

* Fix up frontend to display cross when fail

---------

Co-authored-by: Zeegaan <nge@umbraco.dk>
2023-11-21 13:55:52 +01:00

35 lines
1.4 KiB
C#

using System.Net;
using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Webhooks;
namespace Umbraco.Cms.Core.Services;
public class WebhookLogFactory : IWebhookLogFactory
{
public async Task<WebhookLog> CreateAsync(string eventAlias, WebhookResponseModel responseModel, Webhook webhook, CancellationToken cancellationToken)
{
var log = new WebhookLog
{
Date = DateTime.UtcNow,
EventAlias = eventAlias,
Key = Guid.NewGuid(),
Url = webhook.Url,
WebhookKey = webhook.Key,
};
if (responseModel.HttpResponseMessage is not null)
{
log.RequestBody = await responseModel.HttpResponseMessage!.RequestMessage!.Content!.ReadAsStringAsync(cancellationToken);
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();
}
return log;
}
private string MapStatusCodeToMessage(HttpStatusCode statusCode) => $"{statusCode.ToString()} ({(int)statusCode})";
}