Exemplo n.º 1
0
        public static ResponseBuilder Connect(RequestBuilder request)
        {
            ResponseBuilder response = new ResponseBuilder();

            try
            {
                Socket s = Connect(request.CurrentURL.Host, request.CurrentURL.Port);
                if (s == null)
                {
                    throw new Exception("Connection failed");
                }

                Byte[] bytesSent     = Encoding.UTF8.GetBytes(request.ToString());
                Byte[] bytesReceived = new Byte[request.ToString().Length];

                // Send request to the server.
                s.Send(bytesSent, bytesSent.Length, 0);
                int bytes = 0;
                do
                {
                    // Receive response to the server.
                    bytes = s.Receive(bytesReceived, bytesReceived.Length, 0);
                    response.Append(Encoding.UTF8.GetString(bytesReceived, 0, bytes));
                }while (bytes > 0);
            }
            catch (Exception ex)
            {
                response.Clear();
                response.AppendLine(ex.Message);
                response.AppendLine(ex.StackTrace);
            }
            return(response);
        }
        public void HandleGetRequest(string content_type = "text/html")
        {
            if (http_url.Equals("/") ||
                http_url.Equals(""))
            {
                http_url = "/Index.html";
            }

            if (!Resources.TryGet(http_url, out binSend))
            {
                MemoryStream ms = new MemoryStream();
                if (GetJavaScriptProject(ms))
                {
                    content_type = GetHttpExtensionType();
                    writeSuccess(content_type);
                }
                else
                {
                    if (File.Exists("../../Web" + http_url))
                    {
                        content_type = GetHttpExtensionType();
                        Stream fs = File.Open("../../Web" + http_url, FileMode.Open);
                        fs.CopyTo(ms);
                        fs.Close();
                        writeSuccess(content_type);
                    }
                    else
                    {
                        writeFailure();
                    }
                }

                if (HttpHeaders.ContainsKey("Connection"))
                {
                    writeClose(HttpHeaders["Connection"].ToString());
                }
                else
                {
                    writeClose();
                }

                if (content_type.Contains("text") ||
                    content_type.Contains("json"))
                {
                    ResponseBuilder.Append((ms.ToArray().ToChars(CharEncoding.UTF8)));
                    binSend = ResponseBuilder.ToString().ToBytes(CharEncoding.UTF8);
                    Resources.Add(http_url, binSend);
                }
                else
                {
                    binSend = ResponseBuilder.ToString().ToBytes(CharEncoding.UTF8).Concat(ms.ToArray()).ToArray();
                    Resources.Add(http_url, binSend);
                }
                ms.Dispose();
            }
        }
        public void DisconnectCommand_CheckResponse_1()
        {
            Mock <IIrbisConnection> mock       = GetConnectionMock();
            IIrbisConnection        connection = mock.Object;
            DisconnectCommand       command    = new DisconnectCommand(connection);
            ResponseBuilder         builder    = new ResponseBuilder();

            builder.Append(0).NewLine();
            byte[]         bytes    = builder.Encode();
            ServerResponse response = new ServerResponse(connection, bytes, bytes, true);

            command.CheckResponse(response);
        }
Exemplo n.º 4
0
 public override bool OnBytes(ArraySegment <byte> bytes, Action readNext)
 {
     ResponseBuilder.Append(Encoding.UTF8.GetString(bytes.Array, bytes.Offset, bytes.Array.Length - bytes.Offset));
     return(false);
 }