Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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);
            }
        }
Exemple #5
0
        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);
        }