Initial Commit
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
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; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user