private static void RenderToResponse(IHttpEntity response, ISparkView templateBase)
        {
            Encoding targetEncoding = Encoding.UTF8;

            response.ContentType.CharSet = targetEncoding.HeaderName;
            TextWriter writer     = null;
            bool       ownsWriter = false;

            try
            {
                if (response is ISupportsTextWriter)
                {
                    writer = ((ISupportsTextWriter)response).TextWriter;
                }
                else
                {
                    writer     = new DeterministicStreamWriter(response.Stream, targetEncoding, StreamActionOnDispose.None);
                    ownsWriter = true;
                }
                templateBase.RenderView(writer);
            }
            finally
            {
                if (ownsWriter)
                {
                    writer.Dispose();
                }
            }
        }
 protected void given_request_stream(string requestData, Encoding encoding)
 {
     given_request_stream(stream =>
     {
         using (var sw = new DeterministicStreamWriter(stream, encoding, StreamActionOnDispose.None))
         {
             sw.Write(requestData);
         }
     });
 }
 public void WriteTo(object entity, IHttpEntity response, string[] codecParameters)
 {
     if (response is ISupportsTextWriter)
     {
         TextWriter textWriter = ((ISupportsTextWriter)response).TextWriter;
         Render(entity, textWriter);
     }
     else
     {
         using (var streamWriter = new DeterministicStreamWriter(response.Stream, new UTF8Encoding(), StreamActionOnDispose.None))
         {
             Render(entity, streamWriter);
         }
     }
 }
예제 #4
0
        void RenderTarget(IHttpEntity response, object target)
        {
            var httpHandler = target as IHttpHandler;

            var targetEncoding = new UTF8Encoding(false);

            response.ContentType.CharSet = "utf-8";
            TextWriter writer       = null;
            var        isDisposable = target as IDisposable;
            bool       ownsWriter   = false;

            try
            {
                if (response is ISupportsTextWriter)
                {
                    writer = ((ISupportsTextWriter)response).TextWriter;
                }
                else
                {
                    writer = new DeterministicStreamWriter(response.Stream, targetEncoding, StreamActionOnDispose.None);

                    ownsWriter = true;
                }
                if (target is UserControl)
                {
                    var dummy = new Page();
                    dummy.Controls.Add(target as UserControl);
                    httpHandler = dummy;
                }
                if (httpHandler != null)
                {
                    HttpContext.Current.Server.Execute(httpHandler, writer, false);
                }
            }
            finally
            {
                if (isDisposable != null)
                {
                    isDisposable.Dispose();
                }
                if (ownsWriter)
                {
                    writer.Dispose();
                }
            }
        }
        private static void RenderTarget(IHttpEntity response, RazorViewBase target)
        {
            var targetEncoding = Encoding.UTF8;

            response.ContentType.CharSet = targetEncoding.HeaderName;
            TextWriter writer       = null;
            var        isDisposable = target as IDisposable;
            bool       ownsWriter   = false;

            try
            {
                if (response is ISupportsTextWriter)
                {
                    writer = ((ISupportsTextWriter)response).TextWriter;
                }
                else
                {
                    writer     = new DeterministicStreamWriter(response.Stream, targetEncoding, StreamActionOnDispose.None);
                    ownsWriter = true;
                }

                target.Output = writer;
                target.Execute();
            }
            finally
            {
                if (isDisposable != null)
                {
                    isDisposable.Dispose();
                }
                if (ownsWriter)
                {
                    writer.Dispose();
                }
            }
        }