private void SendResponse(HttpResponseStream responseStream) { var buffer = new byte[4096]; var length = 0; responseStream.Position = 0; while ((length = responseStream.Read(buffer, 0, 4096)) > 0) { _socketConnection.SendData(buffer, 0, length); } }
public void HttpResponseStream_Can_Send_Large_Data_In_Stream() { var responseStream = new HttpResponseStream(); responseStream.StatusCode = 200; responseStream.HttpVersion = "HTTP/1.1"; responseStream.Reason = "This is a test"; responseStream.Headers.Add("Header1", "Value1"); var fileStream = File.OpenRead("oswos.fw.png"); fileStream.CopyTo(responseStream); var memoryStream = new MemoryStream(); responseStream.CopyTo(memoryStream); }
public void HttpResponseStream_Sends_Version_Status_Reason_In_Stream() { var responseStream = new HttpResponseStream(); responseStream.StatusCode = 200; responseStream.HttpVersion = "HTTP/1.1"; responseStream.Reason = "This is a test"; var memoryStream = new MemoryStream(); responseStream.CopyTo(memoryStream); var expectedData = "HTTP/1.1 200 This is a test" + "\x0d\x0a" + "Content-Length:0\x0d\x0a\x0d\x0a"; var responseData = Encoding.UTF8.GetString(memoryStream.ToArray()); Assert.AreEqual(expectedData, responseData); }
public void HttpResponseStream_Sends_MessageBody_In_Stream() { var responseStream = new HttpResponseStream(); responseStream.StatusCode = 200; responseStream.HttpVersion = "HTTP/1.1"; responseStream.Reason = "This is a test"; responseStream.Headers.Add("Header1", "Value1"); var bodyText = Encoding.UTF8.GetBytes("This is the body"); responseStream.Write(bodyText, 0, bodyText.Length); var memoryStream = new MemoryStream(); responseStream.CopyTo(memoryStream); var expectedData = "HTTP/1.1 200 This is a test\x0d\x0aHeader1:Value1" + "\x0d\x0a" + "Content-Length:16\x0d\x0a\x0d\x0aThis is the body"; var responseData = Encoding.UTF8.GetString(memoryStream.ToArray()); Assert.AreEqual(expectedData, responseData); }
public void FindWebsiteAndSendRequestToEndpoint() { var host = string.Empty; if (_httpRequestStream.Headers.ContainsKey("Host")) { host = _httpRequestStream.Headers["Host"]; } try { Logger.Debug("Requesting:" + _httpRequestStream.Uri); var endPoint = _httpStreamRouter.CreateWebsiteEndpoint(host); var responseStream = endPoint.ParseRequest(_httpRequestStream); SendResponse(responseStream); var communicationObject = endPoint as ICommunicationObject; if (communicationObject != null && communicationObject.State == CommunicationState.Opened) { communicationObject.Close(); } } catch (WebsiteNotFoundException ex) { var response = new HttpResponseStream(); response.HttpVersion = _httpRequestStream.HttpVersion; response.StatusCode = 500; response.Reason = ex.Message; SendResponse(response); } catch (Exception ex) { var response = new HttpResponseStream(); response.HttpVersion = _httpRequestStream.HttpVersion; response.StatusCode = 500; response.Reason = ex.Message; SendResponse(response); } _socketConnection.Disconnect(); }