using System.Collections.Generic; using System.IO; using System; using System.Net; namespace Tesses.WebServer { public class ServerContext { public string Method { get; set; } public ServerContext(string method,Stream strm,string path,Dictionary> headers) { Method = method; NetworkStream = strm; RequestHeaders = headers; ResponseHeaders = new Dictionary>(); var qp = new Dictionary>(); StatusCode = 200; // /joel/path/luigi?local=jim&john_surname=connor&demi_surname=lovato&local=tim string[] splitUrl = path.Split(new char[] { '?' }, 2); if (splitUrl.Length > 0) { UrlPath = splitUrl[0]; if (splitUrl.Length == 2) { //local=jim&john_surname=connor&demi_surname=lovato&local=tim //we want to split on & foreach(var item in splitUrl[1].Split(new char[] { '&'},StringSplitOptions.RemoveEmptyEntries)) { //Console.WriteLine(item); var itemSplit = item.Split(new char[] { '=' }, 2); if(itemSplit.Length > 0) { string key = itemSplit[0]; string value = ""; if(itemSplit.Length ==2) { value = itemSplit[1]; } qp.Add(key, value); } } } } QueryParams = qp; } private string get_host() { if(RequestHeaders.ContainsKey("Host")) { return RequestHeaders.GetFirst("Host"); } return ""; } public string Host { get { return get_host(); } } public string UrlPath { get; set; } public Dictionary> QueryParams { get; set; } public Dictionary> RequestHeaders { get; set; } public Dictionary> ResponseHeaders { get; set; } public Stream NetworkStream { get; set; } public int StatusCode { get; internal set; } } }