internal override async Task WriteToResponse(WebServerClientHandler handler, HttpListenerResponse response) { long lengthToSend = -1; var lengthToSendStr = "unknown length"; if (_stream.CanSeek) { var curPos = _stream.Position; var endPos = _stream.Seek(0, SeekOrigin.End); _stream.Seek(curPos, SeekOrigin.Begin); lengthToSend = endPos - curPos; lengthToSendStr = Utils.BytesToString(lengthToSend); } handler.Logger.Trace() .Message($"[{handler.ClientId}] sending stream response ({handler.ProcessingTime}ms) ({lengthToSendStr})") .Property("status_code", StatusCode) .Write(); response.StatusCode = StatusCode; response.SendChunked = true; response.ContentType = _mimeType; if (lengthToSend != -1) { response.ContentLength64 = lengthToSend; } await _stream.CopyToAsync(response.OutputStream); if (_closeAfter) { _stream.Close(); } }
internal override Task WriteToResponse(WebServerClientHandler handler, HttpListenerResponse response) { HttpStatusCode code = (HttpStatusCode)StatusCode; var textStr = ""; if (_text != "") { textStr = $" with text: /{Utils.LimitText(_text, 30)}/"; } handler.Logger.Trace() .Message($"[{handler.ClientId}] sending {code} code response{textStr} ({handler.ProcessingTime}ms)") .Property("text", _text) .Property("status_code", StatusCode) .Write(); response.StatusCode = StatusCode; if (_text == null) { return(Task.CompletedTask); } else { byte[] resp = Encoding.UTF8.GetBytes(_text); response.SendChunked = true; response.ContentType = "text/plain"; response.ContentLength64 = resp.LongLength; return(response.OutputStream.WriteAsync(resp, 0, resp.Length)); } }
internal override Task WriteToResponse(WebServerClientHandler handler, HttpListenerResponse response) { handler.Logger.Trace() .Message("[{webServer.clientId}] sending NotFound response ({webServer.ProcessingTime}ms)") .Property("status_code", StatusCode) .Write(); response.StatusCode = StatusCode; return(Task.CompletedTask); }
internal override Task WriteToResponse(WebServerClientHandler handler, HttpListenerResponse response) { handler.Logger.Trace() .Message($"[{handler.ClientId}] sending Redirect response ({handler.ProcessingTime}ms) (to {_location})") .Property("location", _location) .Property("status_code", StatusCode) .Write(); response.StatusCode = StatusCode; response.RedirectLocation = _location; return(Task.CompletedTask); }
internal override Task WriteToResponse(WebServerClientHandler handler, HttpListenerResponse response) { handler.Logger.Trace() .Message($"[{handler.ClientId}] sending binary response ({handler.ProcessingTime}ms) ({Utils.BytesToString(_data.Length)})") .Property("data_length", _data.Length) .Property("status_code", StatusCode) .Write(); response.StatusCode = StatusCode; response.SendChunked = true; response.ContentType = _mimeType; response.ContentLength64 = _data.LongLength; return(response.OutputStream.WriteAsync(_data, 0, _data.Length)); }
internal override Task WriteToResponse(WebServerClientHandler handler, HttpListenerResponse response) { handler.Logger.Trace() .Message($"[{handler.ClientId}] sending JSON response ({handler.ProcessingTime}ms)") .Property("data", _json) .Property("status_code", StatusCode) .Write(); byte[] resp = Encoding.UTF8.GetBytes(_json); response.StatusCode = StatusCode; response.SendChunked = true; response.ContentType = "application/json"; response.ContentLength64 = resp.LongLength; return(response.OutputStream.WriteAsync(resp, 0, resp.Length)); }
internal override Task WriteToResponse(WebServerClientHandler handler, HttpListenerResponse response) { handler.Logger.Trace() .Message($"[{handler.ClientId}] sending XML response ({handler.ProcessingTime}ms) ({Utils.LimitText(_xml, 100).Replace("\n", " ")})") .Property("xml", _xml) .Property("status_code", StatusCode) .Write(); byte[] resp = Encoding.UTF8.GetBytes(_xml); response.StatusCode = StatusCode; response.SendChunked = true; response.ContentType = "text/xml"; response.ContentLength64 = resp.LongLength; return(response.OutputStream.WriteAsync(resp, 0, resp.Length)); }
internal override async Task WriteToResponse(WebServerClientHandler handler, HttpListenerResponse response) { var template = Template.Parse(_templateText); string html = template.Render(_hash); var logText = Utils.ExtractSimpleHtmlText(html, 1000); handler.Logger.Trace() .Message($"[{handler.ClientId}] sending HTML template response ({handler.ProcessingTime}ms) ({Utils.LimitText(logText, 30)})") .Property("body", logText) .Property("status_code", StatusCode) .Write(); byte[] resp = Encoding.UTF8.GetBytes(html); response.StatusCode = StatusCode; response.SendChunked = true; response.ContentType = "text/html"; response.ContentLength64 = resp.LongLength; await response.OutputStream.WriteAsync(resp, 0, resp.Length); }