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