using System; using System.Net.Mime; using System.Text; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.Formatters; namespace Jellyfin.Api.Formatters; /// /// Xml output formatter. /// public sealed class XmlOutputFormatter : TextOutputFormatter { /// /// Initializes a new instance of the class. /// public XmlOutputFormatter() { SupportedMediaTypes.Clear(); SupportedMediaTypes.Add(MediaTypeNames.Text.Xml); SupportedEncodings.Add(Encoding.UTF8); SupportedEncodings.Add(Encoding.Unicode); } /// public override async Task WriteResponseBodyAsync(OutputFormatterWriteContext context, Encoding selectedEncoding) { ArgumentNullException.ThrowIfNull(context); ArgumentNullException.ThrowIfNull(selectedEncoding); var valueAsString = context.Object?.ToString(); if (string.IsNullOrEmpty(valueAsString)) { return; } var response = context.HttpContext.Response; await response.WriteAsync(valueAsString, selectedEncoding).ConfigureAwait(false); } }