* 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>
35 lines
1.4 KiB
C#
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})";
|
|
}
|