From a130363a4156349c49534b29e5b1bc1179d418da Mon Sep 17 00:00:00 2001 From: jdevillard Date: Tue, 28 May 2024 21:06:22 +0200 Subject: [PATCH] add text/html content parser as string content (#5460) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add text/html content parser as string content * add text/html content parser in configuration --------- Co-authored-by: Jérémie DEVILLARD --- src/modules/Elsa.Http/Features/HttpFeature.cs | 3 ++- .../Parsers/TextHtmlHttpContentParser.cs | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 src/modules/Elsa.Http/Parsers/TextHtmlHttpContentParser.cs diff --git a/src/modules/Elsa.Http/Features/HttpFeature.cs b/src/modules/Elsa.Http/Features/HttpFeature.cs index ac938bf5c..441e5a900 100644 --- a/src/modules/Elsa.Http/Features/HttpFeature.cs +++ b/src/modules/Elsa.Http/Features/HttpFeature.cs @@ -161,7 +161,8 @@ public class HttpFeature : FeatureBase // Content parsers. .AddSingleton() .AddSingleton() - .AddSingleton() + .AddSingleton() + .AddSingleton() // HTTP content factories. .AddScoped() diff --git a/src/modules/Elsa.Http/Parsers/TextHtmlHttpContentParser.cs b/src/modules/Elsa.Http/Parsers/TextHtmlHttpContentParser.cs new file mode 100644 index 000000000..9557a69d4 --- /dev/null +++ b/src/modules/Elsa.Http/Parsers/TextHtmlHttpContentParser.cs @@ -0,0 +1,24 @@ +using Elsa.Http.Contracts; + +namespace Elsa.Http.Parsers; + +/// +/// Reads text/html content type streams. +/// +// TODO: found a library to use a Html Content Parser and use a complexe object Type, until this, this class allow to accept request send using text/html content-type +public class TextHtmlHttpContentParser : IHttpContentParser +{ + /// + public int Priority => 0; + + /// + public bool GetSupportsContentType(string contentType) => contentType.Contains("text/html", StringComparison.InvariantCultureIgnoreCase); + + /// + public async Task ReadAsync(Stream content, Type? returnType, CancellationToken cancellationToken) + { + using var reader = new StreamReader(content, leaveOpen: true); + var stringContent = await reader.ReadToEndAsync(); + return stringContent; + } +} \ No newline at end of file