public void WriteTo(Stream responseStream) { if (this.FileInfo != null) { using (var fs = this.FileInfo.OpenRead()) { fs.WriteTo(responseStream); responseStream.Flush(); } return; } if (this.ResponseStream != null) { this.ResponseStream.WriteTo(responseStream); responseStream.Flush(); DisposeStream(); return; } if (this.ResponseText != null) { var bytes = System.Text.Encoding.UTF8.GetBytes(this.ResponseText); responseStream.Write(bytes, 0, bytes.Length); responseStream.Flush(); return; } if (this.ResponseFilter == null) { throw new ArgumentNullException("ResponseFilter"); } if (this.RequestContext == null) { throw new ArgumentNullException("RequestContext"); } var bytesResponse = this.Response as byte[]; if (bytesResponse != null) { responseStream.Write(bytesResponse, 0, bytesResponse.Length); return; } if (View != null) { RequestContext.SetItem("View", View); } if (Template != null) { RequestContext.SetItem("Template", Template); } RequestContext.SetItem("HttpResult", this); ResponseFilter.SerializeToStream(this.RequestContext, this.Response, responseStream); }
private void WriteTo(Stream responseStream, int paddingLength) { var response = RequestContext?.Response; if (this.FileInfo != null) { response?.SetContentLength(FileInfo.Length + paddingLength); using (var fs = this.FileInfo.OpenRead()) { fs.WriteTo(responseStream); return; } } if (this.ResponseStream != null) { if (response != null) { var ms = ResponseStream as MemoryStream; if (ms != null) { var bytes = ms.ToArray(); response.SetContentLength(bytes.Length + paddingLength); responseStream.Write(bytes, 0, bytes.Length); return; } } this.ResponseStream.WriteTo(responseStream); return; } if (this.ResponseText != null) { var bytes = Encoding.UTF8.GetBytes(this.ResponseText); response?.SetContentLength(bytes.Length + paddingLength); responseStream.Write(bytes, 0, bytes.Length); return; } if (this.ResponseFilter == null) { throw new ArgumentNullException("ResponseFilter"); } if (this.RequestContext == null) { throw new ArgumentNullException("RequestContext"); } var bytesResponse = this.Response as byte[]; if (bytesResponse != null) { response?.SetContentLength(bytesResponse.Length + paddingLength); responseStream.Write(bytesResponse, 0, bytesResponse.Length); return; } if (View != null) { RequestContext.SetItem("View", View); } if (Template != null) { RequestContext.SetItem("Template", Template); } RequestContext.SetItem("HttpResult", this); ResponseFilter.SerializeToStream(this.RequestContext, this.Response, responseStream); }
private async Task WriteToAsync(Stream responseStream, int paddingLength, CancellationToken token) { var response = RequestContext?.Response; if (this.FileInfo != null) { response?.SetContentLength(FileInfo.Length + paddingLength); using (var fs = this.FileInfo.OpenRead()) { await fs.CopyToAsync(responseStream, token); return; } } if (this.ResponseStream != null) { try { if (response != null) { if (ResponseStream is MemoryStream ms) { var bytes = ms.ToArray(); response.SetContentLength(bytes.Length + paddingLength); await responseStream.WriteAsync(bytes, 0, bytes.Length, token); //Write Sync to MemoryStream return; } } await ResponseStream.CopyToAsync(responseStream, token); } finally { DisposeStream(); } return; } if (this.ResponseText != null) { var bytes = Encoding.UTF8.GetBytes(this.ResponseText); response?.SetContentLength(bytes.Length + paddingLength); await responseStream.WriteAsync(bytes, token); return; } if (this.ResponseFilter == null) { throw new ArgumentNullException(nameof(ResponseFilter)); } if (this.RequestContext == null) { throw new ArgumentNullException(nameof(RequestContext)); } if (this.Response is byte[] bytesResponse) { response?.SetContentLength(bytesResponse.Length + paddingLength); await responseStream.WriteAsync(bytesResponse, token); return; } if (View != null) { RequestContext.SetItem("View", View); } if (Template != null) { RequestContext.SetItem("Template", Template); } RequestContext.SetItem("HttpResult", this); if (Response != null) { ResponseFilter.SerializeToStream(this.RequestContext, this.Response, responseStream); } }