public static string ToSerializedString(object result, IRequestContext requestContext) { if (result == null) { return(null); } var contentType = requestContext.ResponseContentType; var contentFilters = ContentCacheManager.ContentTypeFilter; if (contentFilters != null) { var serializer = contentFilters.GetResponseSerializer(contentType); if (serializer != null) { try { using (var ms = new MemoryStream()) { var httpRes = new HttpResponseStreamWrapper(ms); serializer(requestContext, result, httpRes); var bytes = ms.ToArray(); return(Encoding.UTF8.GetString(bytes)); } } catch (Exception) { throw; } } } switch (contentType) { case MimeTypes.Xml: case Common.Web.ContentType.Xml: return(DataContractSerializer.Instance.Parse(result)); case MimeTypes.Json: case Common.Web.ContentType.Json: return(JsonDataContractSerializer.Instance.SerializeToString(result)); case MimeTypes.Jsv: case Common.Web.ContentType.Jsv: return(TypeSerializer.SerializeToString(result)); case MimeTypes.Csv: return(CsvSerializer.SerializeToString(result)); default: throw new NotSupportedException(contentType); } }
public string GetHtml(object dto, string format) { var httpReq = new MockHttpRequest { Headers = new NameValueCollection(), OperationName = "OperationName", QueryString = new NameValueCollection(), }; httpReq.QueryString.Add("format", format); using (var ms = new MemoryStream()) { var httpRes = new HttpResponseStreamWrapper(ms); appHost.ViewEngines[0].ProcessRequest(httpReq, httpRes, dto); var utf8Bytes = ms.ToArray(); var html = utf8Bytes.FromUtf8Bytes(); return(html); } }
public string GetHtml(object dto, string format) { var httpReq = new MockHttpRequest { Headers = PclExportClient.Instance.NewNameValueCollection(), OperationName = "OperationName", QueryString = PclExportClient.Instance.NewNameValueCollection(), }; httpReq.QueryString.Add("format", format); using (var ms = new MemoryStream()) { var httpRes = new HttpResponseStreamWrapper(ms, httpReq); appHost.ViewEngines[0].ProcessRequest(httpReq, httpRes, dto); var utf8Bytes = ms.ToArray(); var html = utf8Bytes.FromUtf8Bytes(); return html; } }
public string GetHtml(object dto, string format) { var httpReq = new MockHttpRequest { Headers = new NameValueCollection(), OperationName = "OperationName", QueryString = new NameValueCollection(), }; httpReq.QueryString.Add("format", format); using (var ms = new MemoryStream()) { var httpRes = new HttpResponseStreamWrapper(ms, httpReq); appHost.ViewEngines[0].ProcessRequestAsync(httpReq, dto, httpRes.OutputStream); var html = ms.ReadToEnd(); return(html); } }
public string GetHtml(object dto, string format) { var httpReq = new MockHttpRequest { Headers = new NameValueCollection(), OperationName = "OperationName", QueryString = new NameValueCollection(), }; httpReq.QueryString.Add("format", format); var requestContext = new HttpRequestContext((IHttpRequest)httpReq, dto); using (var ms = new MemoryStream()) { var httpRes = new HttpResponseStreamWrapper(ms); appHost.HtmlProviders[0](requestContext, dto, httpRes); var utf8Bytes = ms.ToArray(); var html = utf8Bytes.FromUtf8Bytes(); return(html); } }
public byte[] SerializeToBytes(IRequest req, object response) { var contentType = req.ResponseContentType; StreamSerializerDelegate responseStreamWriter; if (this.ContentTypeSerializers.TryGetValue(contentType, out responseStreamWriter) || this.ContentTypeSerializers.TryGetValue(ContentFormat.GetRealContentType(contentType), out responseStreamWriter)) { using (var ms = MemoryStreamFactory.GetStream()) { responseStreamWriter(req, response, ms); ms.Position = 0; return ms.ToArray(); } } ResponseSerializerDelegate responseWriter; if (this.ContentTypeResponseSerializers.TryGetValue(contentType, out responseWriter) || this.ContentTypeResponseSerializers.TryGetValue(ContentFormat.GetRealContentType(contentType), out responseWriter)) { using (var ms = MemoryStreamFactory.GetStream()) { var httpRes = new HttpResponseStreamWrapper(ms); responseWriter(req, response, httpRes); ms.Position = 0; return ms.ToArray(); } } var contentTypeAttr = ContentFormat.GetEndpointAttributes(contentType); switch (contentTypeAttr) { case RequestAttributes.Xml: return XmlSerializer.SerializeToString(response).ToUtf8Bytes(); case RequestAttributes.Json: return JsonDataContractSerializer.Instance.SerializeToString(response).ToUtf8Bytes(); case RequestAttributes.Jsv: return TypeSerializer.SerializeToString(response).ToUtf8Bytes(); case RequestAttributes.Soap11: return SoapHandler.SerializeSoap11ToBytes(req, response); case RequestAttributes.Soap12: return SoapHandler.SerializeSoap12ToBytes(req, response); } throw new NotSupportedException("ContentType not supported: " + contentType); }
public void SerializeToStream(IRequest requestContext, object response, Stream responseStream) { var contentType = requestContext.ResponseContentType; var serializer = GetResponseSerializer(contentType); if (serializer == null) throw new NotSupportedException("ContentType not supported: " + contentType); var httpRes = new HttpResponseStreamWrapper(responseStream) { Dto = requestContext.Response.Dto }; serializer(requestContext, response, httpRes); }
public string SerializeToString(IRequest req, object response) { var contentType = req.ResponseContentType; StreamSerializerDelegate responseStreamWriter; if (this.ContentTypeSerializers.TryGetValue(contentType, out responseStreamWriter) || this.ContentTypeSerializers.TryGetValue(ContentFormat.GetRealContentType(contentType), out responseStreamWriter)) { using (var ms = MemoryStreamFactory.GetStream()) { responseStreamWriter(req, response, ms); ms.Position = 0; var result = new StreamReader(ms, UTF8EncodingWithoutBom).ReadToEnd(); return result; } } ResponseSerializerDelegate responseWriter; if (this.ContentTypeResponseSerializers.TryGetValue(contentType, out responseWriter) || this.ContentTypeResponseSerializers.TryGetValue(ContentFormat.GetRealContentType(contentType), out responseWriter)) { using (var ms = MemoryStreamFactory.GetStream()) { var httpRes = new HttpResponseStreamWrapper(ms) { KeepOpen = true, //Don't let view engines close the OutputStream }; responseWriter(req, response, httpRes); var bytes = ms.ToArray(); var result = bytes.FromUtf8Bytes(); return result; } } var contentTypeAttr = ContentFormat.GetEndpointAttributes(contentType); switch (contentTypeAttr) { case RequestAttributes.Xml: return XmlSerializer.SerializeToString(response); case RequestAttributes.Json: return JsonDataContractSerializer.Instance.SerializeToString(response); case RequestAttributes.Jsv: return TypeSerializer.SerializeToString(response); case RequestAttributes.Soap11: return SoapHandler.SerializeSoap11ToBytes(req, response).FromUtf8Bytes(); case RequestAttributes.Soap12: return SoapHandler.SerializeSoap12ToBytes(req, response).FromUtf8Bytes(); } throw new NotSupportedException("ContentType not supported: " + contentType); }