mirror of
https://github.com/aljazceru/btcpayserver.git
synced 2025-12-24 01:14:20 +01:00
Show success/error message after sending test webhook
This commit is contained in:
@@ -123,7 +123,13 @@ namespace BTCPayServer.Controllers
|
|||||||
[HttpPost("{storeId}/webhooks/{webhookId}/test")]
|
[HttpPost("{storeId}/webhooks/{webhookId}/test")]
|
||||||
public async Task<IActionResult> TestWebhook(string webhookId, TestWebhookViewModel viewModel)
|
public async Task<IActionResult> TestWebhook(string webhookId, TestWebhookViewModel viewModel)
|
||||||
{
|
{
|
||||||
await WebhookNotificationManager.TestWebhook(CurrentStore.Id, webhookId, viewModel.Type);
|
var result = await WebhookNotificationManager.TestWebhook(CurrentStore.Id, webhookId, viewModel.Type);
|
||||||
|
|
||||||
|
if (result.Success) {
|
||||||
|
TempData[WellKnownTempData.SuccessMessage] = $"{viewModel.Type.ToString()} event delivered successfully!";
|
||||||
|
} else {
|
||||||
|
TempData[WellKnownTempData.ErrorMessage] = $"{viewModel.Type.ToString()} event could not be delivered";
|
||||||
|
}
|
||||||
|
|
||||||
return View(nameof(TestWebhook));
|
return View(nameof(TestWebhook));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ namespace BTCPayServer.HostedServices
|
|||||||
return webhookEvent;
|
return webhookEvent;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task TestWebhook(string storeId, string webhookId, WebhookEventType webhookEventType)
|
public async Task<DeliveryResult> TestWebhook(string storeId, string webhookId, WebhookEventType webhookEventType)
|
||||||
{
|
{
|
||||||
var delivery = NewDelivery(webhookId);
|
var delivery = NewDelivery(webhookId);
|
||||||
var webhook = (await StoreRepository.GetWebhooks(storeId)).Where(w => w.Id == webhookId).FirstOrDefault();
|
var webhook = (await StoreRepository.GetWebhooks(storeId)).Where(w => w.Id == webhookId).FirstOrDefault();
|
||||||
@@ -133,7 +133,7 @@ namespace BTCPayServer.HostedServices
|
|||||||
webhook.GetBlob()
|
webhook.GetBlob()
|
||||||
);
|
);
|
||||||
|
|
||||||
var result = await SendAndSaveDelivery(deliveryRequest);
|
return await SendDelivery(deliveryRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override async Task ProcessEvent(object evt, CancellationToken cancellationToken)
|
protected override async Task ProcessEvent(object evt, CancellationToken cancellationToken)
|
||||||
@@ -295,12 +295,13 @@ namespace BTCPayServer.HostedServices
|
|||||||
return wh.Active && wh.AuthorizedEvents.Match(type);
|
return wh.Active && wh.AuthorizedEvents.Match(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
class DeliveryResult
|
public class DeliveryResult
|
||||||
{
|
{
|
||||||
public string DeliveryId { get; set; }
|
public string? DeliveryId { get; set; }
|
||||||
public bool Success { get; set; }
|
public bool Success { get; set; }
|
||||||
}
|
}
|
||||||
private async Task<DeliveryResult> SendAndSaveDelivery(WebhookDeliveryRequest ctx)
|
|
||||||
|
private async Task<DeliveryResult> SendDelivery(WebhookDeliveryRequest ctx)
|
||||||
{
|
{
|
||||||
var uri = new Uri(ctx.WebhookBlob.Url, UriKind.Absolute);
|
var uri = new Uri(ctx.WebhookBlob.Url, UriKind.Absolute);
|
||||||
var httpClient = GetClient(uri);
|
var httpClient = GetClient(uri);
|
||||||
@@ -336,10 +337,19 @@ namespace BTCPayServer.HostedServices
|
|||||||
deliveryBlob.ErrorMessage = ex.Message;
|
deliveryBlob.ErrorMessage = ex.Message;
|
||||||
}
|
}
|
||||||
ctx.Delivery.SetBlob(deliveryBlob);
|
ctx.Delivery.SetBlob(deliveryBlob);
|
||||||
await StoreRepository.AddWebhookDelivery(ctx.Delivery);
|
|
||||||
return new DeliveryResult() { Success = deliveryBlob.ErrorMessage is null, DeliveryId = ctx.Delivery.Id };
|
return new DeliveryResult() { Success = deliveryBlob.ErrorMessage is null, DeliveryId = ctx.Delivery.Id };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private async Task<DeliveryResult> SendAndSaveDelivery(WebhookDeliveryRequest ctx)
|
||||||
|
{
|
||||||
|
var result = await SendDelivery(ctx);
|
||||||
|
await StoreRepository.AddWebhookDelivery(ctx.Delivery);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
private byte[] ToBytes(WebhookEvent webhookEvent)
|
private byte[] ToBytes(WebhookEvent webhookEvent)
|
||||||
{
|
{
|
||||||
var str = JsonConvert.SerializeObject(webhookEvent, Formatting.Indented, DefaultSerializerSettings);
|
var str = JsonConvert.SerializeObject(webhookEvent, Formatting.Indented, DefaultSerializerSettings);
|
||||||
|
|||||||
Reference in New Issue
Block a user