public MainClass(IPEndPoint endpoint) { this.EndPoint = endpoint; RootUri = string.Format ("http://{0}:{1}/", endpoint.Address, endpoint.Port); RedirectUri = RootUri + "Redirect/"; RedirectContinueUri = RootUri + "Redirect/Continue"; Server = new Server (EndPoint); }
public Request(Server server) { Server = server; var request = server.Reader.ReadLine (); if (request.EndsWith ("HTTP/1.0")) Version = HttpVersion.Version10; else if (request.EndsWith ("HTTP/1.1")) Version = HttpVersion.Version11; else throw new WebException ("Invalid request: " + request); int pos = request.IndexOf (' '); Method = request.Substring (0, pos); Uri = request.Substring (pos+1, request.Length-pos-10); Server.Log ("GOT REQUEST: |{0}|{1}|{2}|", Method, Uri, Version); Headers = new Dictionary<string,string> (); do { var line = server.Reader.ReadLine (); if (line == null || line == string.Empty) break; pos = line.IndexOf (":"); var key = line.Substring (0, pos).Trim (); var value = line.Substring (pos + 1).Trim (); Server.Log ("HEADER: |{0}|{1}|", key, value); Headers [key] = value; } while (true); Server.Log ("GOT HEADERS: {0}", Headers.ContainsKey ("Content-Length")); }
public void RequestHandler(Server.Request request) { Server.Response response; if (request.Uri.StartsWith ("/Redirect/")) { var redirectUri = request.Uri.Substring (9); request.Server.Log ("REDIRECT: |{0}|", redirectUri); response = request.CreateResponse (HttpStatusCode.TemporaryRedirect); response.Headers ["Location"] = redirectUri; response.Headers ["Content-Type"] = "text/plain"; response.Body = "Redirected"; response.Send (); request.ReadBody (); return; } if (request.Uri.Contains ("Continue")) { response = request.CreateResponse (HttpStatusCode.Continue); response.Send (); } request.ReadBody (); response = request.CreateResponse (HttpStatusCode.OK); response.Headers ["Content-Type"] = "text/plain"; response.Body = "TEST"; response.Send (); }