elsa-core/src/modules/Elsa.Http/ContentWriters/XmlContentFactory.cs

33 lines
918 B
C#
Raw Normal View History

2023-01-24 21:39:31 +00:00
using System.Net.Mime;
using System.Text;
using System.Xml.Serialization;
namespace Elsa.Http.ContentWriters;
/// <summary>
2023-10-12 12:20:15 +00:00
/// Creates a <see cref="HttpContent"/> object for XML types.
2023-01-24 21:39:31 +00:00
/// </summary>
public class XmlContentFactory : IHttpContentFactory
{
/// <inheritdoc />
2023-10-12 12:20:15 +00:00
public IEnumerable<string> SupportedContentTypes => new[]
{
MediaTypeNames.Application.Xml,
MediaTypeNames.Text.Xml,
MediaTypeNames.Application.Soap,
};
2023-01-24 21:39:31 +00:00
/// <inheritdoc />
public HttpContent CreateHttpContent(object content, string contentType)
{
var text = content as string ?? Serialize(content);
return new StringContent(text, Encoding.UTF8, contentType);
}
2023-10-12 12:20:15 +00:00
2023-01-24 21:39:31 +00:00
private string Serialize(object value)
{
using var writer = new StringWriter();
new XmlSerializer(value.GetType()).Serialize(writer, value);
return writer.ToString();
}
}