123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Text;
- using MediaBrowser.Model.Services;
- namespace ServiceStack.Host
- {
- public class ContentTypes
- {
- public static ContentTypes Instance = new ContentTypes();
- public void SerializeToStream(IRequest req, object response, Stream responseStream)
- {
- var contentType = req.ResponseContentType;
- var serializer = GetStreamSerializer(contentType);
- serializer(response, responseStream);
- }
- public static Action<object, Stream> GetStreamSerializer(string contentType)
- {
- switch (GetRealContentType(contentType))
- {
- case "application/xml":
- case "text/xml":
- case "text/xml; charset=utf-8": //"text/xml; charset=utf-8" also matches xml
- return (o, s) => ServiceStackHost.Instance.SerializeToXml(o, s);
- case "application/json":
- case "text/json":
- return (o, s) => ServiceStackHost.Instance.SerializeToJson(o, s);
- }
- return null;
- }
- public Func<Type, Stream, object> GetStreamDeserializer(string contentType)
- {
- switch (GetRealContentType(contentType))
- {
- case "application/xml":
- case "text/xml":
- case "text/xml; charset=utf-8": //"text/xml; charset=utf-8" also matches xml
- return ServiceStackHost.Instance.DeserializeXml;
- case "application/json":
- case "text/json":
- return ServiceStackHost.Instance.DeserializeJson;
- }
- return null;
- }
- private static string GetRealContentType(string contentType)
- {
- return contentType == null
- ? null
- : contentType.Split(';')[0].ToLower().Trim();
- }
- }
- }
|