Skip to content

Commit bb456fb

Browse files
committed
Add functionality to call a PostTransform method after the Webhook request has been transformed
1 parent 6db5427 commit bb456fb

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed

src/WireMock.Net/Http/WebhookSender.cs

+7-5
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ IResponseMessage originalResponseMessage
4646

4747
IBodyData? bodyData;
4848
IDictionary<string, WireMockList<string>>? headers;
49-
string webhookRequestUrl;
49+
string requestUrl;
5050
if (webhookRequest.UseTransformer == true)
5151
{
5252
ITransformer transformer;
@@ -69,18 +69,20 @@ IResponseMessage originalResponseMessage
6969

7070
bodyData = transformer.TransformBody(mapping, originalRequestMessage, originalResponseMessage, webhookRequest.BodyData, webhookRequest.TransformerReplaceNodeOptions);
7171
headers = transformer.TransformHeaders(mapping, originalRequestMessage, originalResponseMessage, webhookRequest.Headers);
72-
webhookRequestUrl = transformer.TransformString(mapping, originalRequestMessage, originalResponseMessage, webhookRequest.Url);
72+
requestUrl = transformer.TransformString(mapping, originalRequestMessage, originalResponseMessage, webhookRequest.Url);
7373
}
7474
else
7575
{
7676
bodyData = webhookRequest.BodyData;
7777
headers = webhookRequest.Headers;
78-
webhookRequestUrl = webhookRequest.Url;
78+
requestUrl = webhookRequest.Url;
7979
}
8080

81+
mapping.Settings.WebhookSettings?.PostTransform(mapping, requestUrl, bodyData, headers);
82+
8183
// Create RequestMessage
8284
var requestMessage = new RequestMessage(
83-
new UrlDetails(webhookRequestUrl),
85+
new UrlDetails(requestUrl),
8486
webhookRequest.Method,
8587
ClientIp,
8688
bodyData,
@@ -91,7 +93,7 @@ IResponseMessage originalResponseMessage
9193
};
9294

9395
// Create HttpRequestMessage
94-
var httpRequestMessage = HttpRequestMessageHelper.Create(requestMessage, webhookRequestUrl);
96+
var httpRequestMessage = HttpRequestMessageHelper.Create(requestMessage, requestUrl);
9597

9698
// Delay (if required)
9799
if (TryGetDelay(webhookRequest, out var delay))
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,24 @@
11
// Copyright © WireMock.Net
22

3+
using System.Collections.Generic;
4+
using WireMock.Types;
5+
using WireMock.Util;
6+
37
namespace WireMock.Settings;
48

59
/// <summary>
610
/// WebhookSettings
711
/// </summary>
812
public class WebhookSettings : HttpClientSettings
913
{
14+
/// <summary>
15+
/// Executes an action after the transformation of the request body.
16+
/// </summary>
17+
/// <param name="mapping">The mapping used for the request.</param>
18+
/// <param name="requestUrl">The request Url.</param>
19+
/// <param name="bodyData">The body data of the request. [Optional]</param>
20+
/// <param name="headers">The headers of the request. [Optional]</param>
21+
public virtual void PostTransform(IMapping mapping, string requestUrl, IBodyData? bodyData = null, IDictionary<string, WireMockList<string>>? headers = null)
22+
{
23+
}
1024
}

0 commit comments

Comments
 (0)