From 38e58f7b71375d48e9f73d265b2cf8c9a06e7bbe Mon Sep 17 00:00:00 2001 From: Mia Winter Date: Sun, 4 Feb 2024 13:14:32 +0100 Subject: [PATCH] fixed rss xml encoding always being utf-16 --- Wave/Utilities/SyndicationFeedFormatter.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Wave/Utilities/SyndicationFeedFormatter.cs b/Wave/Utilities/SyndicationFeedFormatter.cs index b3ea1bf..5800e9b 100644 --- a/Wave/Utilities/SyndicationFeedFormatter.cs +++ b/Wave/Utilities/SyndicationFeedFormatter.cs @@ -13,6 +13,7 @@ public class SyndicationFeedFormatter : TextOutputFormatter { SupportedMediaTypes.Add(MediaTypeHeaderValue.Parse("application/atom+xml")); SupportedEncodings.Add(Encoding.UTF8); + SupportedEncodings.Add(Encoding.Unicode); } protected override bool CanWriteType(Type? type) @@ -23,10 +24,10 @@ protected override bool CanWriteType(Type? type) httpContext.Response.Headers.ContentDisposition = "inline"; var feed = context.Object as SyndicationFeed; - - await using var stringWriter = new StringWriter(); - await using var rssWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings { - Async = true + + await using var stream = new MemoryStream(); + await using var rssWriter = XmlWriter.Create(stream, new XmlWriterSettings { + Async = true, Encoding = selectedEncoding }); System.ServiceModel.Syndication.SyndicationFeedFormatter formatter; if (context.ContentType.Value?.StartsWith("application/rss+xml") is true) { @@ -41,6 +42,6 @@ protected override bool CanWriteType(Type? type) formatter.WriteTo(rssWriter); rssWriter.Close(); - await httpContext.Response.WriteAsync(stringWriter.ToString(), selectedEncoding); + await httpContext.Response.BodyWriter.WriteAsync(stream.ToArray()); } } \ No newline at end of file