tesses.webserver/Tesses.WebServer/ServerContext.cs

66 lines
2.3 KiB
C#

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<string,List<string>> headers)
{
Method = method;
NetworkStream = strm;
RequestHeaders = headers;
ResponseHeaders = new Dictionary<string, List<string>>();
var qp = new Dictionary<string, List<string>>();
QueryParams = qp;
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[] { '&'},2))
{
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); //hince qp is reference to QueryParams
}
}
}
}
}
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<string,List<string>> QueryParams { get; set; }
public Dictionary<string,List<string>> RequestHeaders { get; set; }
public Dictionary<string,List<string>> ResponseHeaders { get; set; }
public Stream NetworkStream { get; set; }
public int StatusCode { get; internal set; }
}
}