Exemplo n.º 1
0
        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));
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 5
0
        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));
        }
Exemplo n.º 7
0
        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);
        }