From cbdc3e4375a2a102ffdb3d30ef4b677d2781f299 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Fri, 20 Aug 2021 12:24:59 +0200 Subject: [PATCH] Make available raw content --- .../Middleware/HttpEndpointMiddleware.cs | 6 +++++- .../Elsa.Activities.Http/Models/HttpRequestModel.cs | 2 +- .../Parsers/Request/FormHttpRequestBodyParser.cs | 2 +- .../Parsers/Request/JsonHttpRequestBodyParser.cs | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/activities/Elsa.Activities.Http/Middleware/HttpEndpointMiddleware.cs b/src/activities/Elsa.Activities.Http/Middleware/HttpEndpointMiddleware.cs index 60132a6af..9f7628a4b 100644 --- a/src/activities/Elsa.Activities.Http/Middleware/HttpEndpointMiddleware.cs +++ b/src/activities/Elsa.Activities.Http/Middleware/HttpEndpointMiddleware.cs @@ -106,7 +106,11 @@ namespace Elsa.Activities.Http.Middleware if (readContent) { var targetType = await activityWrapper.EvaluatePropertyValueAsync(x => x.TargetType, cancellationToken); - inputModel = inputModel with { Body = await contentParser.ParseAsync(request, targetType, cancellationToken) }; + inputModel = inputModel with + { + RawBody = await request.ReadContentAsStringAsync(cancellationToken), + Body = await contentParser.ParseAsync(request, targetType, cancellationToken) + }; } var useDispatch = httpContext.Request.GetUseDispatch(); diff --git a/src/activities/Elsa.Activities.Http/Models/HttpRequestModel.cs b/src/activities/Elsa.Activities.Http/Models/HttpRequestModel.cs index d32188c98..2f9642c52 100644 --- a/src/activities/Elsa.Activities.Http/Models/HttpRequestModel.cs +++ b/src/activities/Elsa.Activities.Http/Models/HttpRequestModel.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; namespace Elsa.Activities.Http.Models { - public record HttpRequestModel(string Path, string Method, IDictionary QueryString, IDictionary Headers, object? Body = default) + public record HttpRequestModel(string Path, string Method, IDictionary QueryString, IDictionary Headers, object? Body = default, string? RawBody = default) { public T GetBody() => (T) Body!; } diff --git a/src/activities/Elsa.Activities.Http/Parsers/Request/FormHttpRequestBodyParser.cs b/src/activities/Elsa.Activities.Http/Parsers/Request/FormHttpRequestBodyParser.cs index 5cf19ea4c..afe40b716 100644 --- a/src/activities/Elsa.Activities.Http/Parsers/Request/FormHttpRequestBodyParser.cs +++ b/src/activities/Elsa.Activities.Http/Parsers/Request/FormHttpRequestBodyParser.cs @@ -5,7 +5,7 @@ using System.Threading.Tasks; using Elsa.Activities.Http.Services; using Microsoft.AspNetCore.Http; -namespace Elsa.Activities.Http.Parsers +namespace Elsa.Activities.Http.Parsers.Request { public class FormHttpRequestBodyParser : IHttpRequestBodyParser { diff --git a/src/activities/Elsa.Activities.Http/Parsers/Request/JsonHttpRequestBodyParser.cs b/src/activities/Elsa.Activities.Http/Parsers/Request/JsonHttpRequestBodyParser.cs index 94ef5756e..cd6eb1a0b 100644 --- a/src/activities/Elsa.Activities.Http/Parsers/Request/JsonHttpRequestBodyParser.cs +++ b/src/activities/Elsa.Activities.Http/Parsers/Request/JsonHttpRequestBodyParser.cs @@ -7,7 +7,7 @@ using Elsa.Activities.Http.Services; using Elsa.Serialization; using Microsoft.AspNetCore.Http; -namespace Elsa.Activities.Http.Parsers +namespace Elsa.Activities.Http.Parsers.Request { public class JsonHttpRequestBodyParser : IHttpRequestBodyParser {