Allow specifying WebhookDeliveryData webhookid right away

This commit is contained in:
Umar Bolatov
2021-04-20 18:52:09 -07:00
parent ad11b61af2
commit 7c16f8f134

View File

@@ -94,8 +94,7 @@ namespace BTCPayServer.HostedServices
if (webhookDelivery is null) if (webhookDelivery is null)
return null; return null;
var oldDeliveryBlob = webhookDelivery.Delivery.GetBlob(); var oldDeliveryBlob = webhookDelivery.Delivery.GetBlob();
var newDelivery = NewDelivery(); var newDelivery = NewDelivery(webhookDelivery.Webhook.Id);
newDelivery.WebhookId = webhookDelivery.Webhook.Id;
var newDeliveryBlob = new WebhookDeliveryBlob(); var newDeliveryBlob = new WebhookDeliveryBlob();
newDeliveryBlob.Request = oldDeliveryBlob.Request; newDeliveryBlob.Request = oldDeliveryBlob.Request;
var webhookEvent = newDeliveryBlob.ReadRequestAs<WebhookEvent>(); var webhookEvent = newDeliveryBlob.ReadRequestAs<WebhookEvent>();
@@ -125,9 +124,7 @@ namespace BTCPayServer.HostedServices
public async Task TestWebhook(string storeId, string webhookId, WebhookEventType webhookEventType) public async Task TestWebhook(string storeId, string webhookId, WebhookEventType webhookEventType)
{ {
var delivery = NewDelivery(); var delivery = NewDelivery(webhookId);
delivery.WebhookId = 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();
var channel = Channel.CreateUnbounded<WebhookDeliveryRequest>(); var channel = Channel.CreateUnbounded<WebhookDeliveryRequest>();
@@ -153,8 +150,7 @@ namespace BTCPayServer.HostedServices
continue; continue;
if (!ShouldDeliver(webhookEvent.Type, webhookBlob)) if (!ShouldDeliver(webhookEvent.Type, webhookBlob))
continue; continue;
Data.WebhookDeliveryData delivery = NewDelivery(); Data.WebhookDeliveryData delivery = NewDelivery(webhook.Id);
delivery.WebhookId = webhook.Id;
webhookEvent.InvoiceId = invoiceEvent.InvoiceId; webhookEvent.InvoiceId = invoiceEvent.InvoiceId;
webhookEvent.StoreId = invoiceEvent.Invoice.StoreId; webhookEvent.StoreId = invoiceEvent.Invoice.StoreId;
webhookEvent.DeliveryId = delivery.Id; webhookEvent.DeliveryId = delivery.Id;
@@ -353,12 +349,14 @@ namespace BTCPayServer.HostedServices
return bytes; return bytes;
} }
private static Data.WebhookDeliveryData NewDelivery() private static Data.WebhookDeliveryData NewDelivery(string webhookId)
{ {
var delivery = new Data.WebhookDeliveryData(); return new Data.WebhookDeliveryData
delivery.Id = Encoders.Base58.EncodeData(RandomUtils.GetBytes(16)); {
delivery.Timestamp = DateTimeOffset.UtcNow; Id = Encoders.Base58.EncodeData(RandomUtils.GetBytes(16)),
return delivery; Timestamp = DateTimeOffset.UtcNow,
WebhookId = webhookId
};
} }
} }
} }