public void ParseFirstLine()
{
if (this.FirstHeader.Length == 0)
throw new HttpHeaderException("HTTP Header is empty");
String lHeaderLine = this.FirstHeader;
String[] lRequestHeaderValues = lHeaderLine.Split(' ');
if (lRequestHeaderValues.Length < 3)
throw new HttpHeaderException("Invalid HTTP Header Line \"" + lHeaderLine + "\"");
if (lHeaderLine.StartsWith("HTTP/"))
{
// HTTP Response
try
{
this.HttpCode = (HttpStatusCode)Enum.Parse(typeof(HttpStatusCode), lRequestHeaderValues[1], true);
}
catch (ArgumentException)
{
this.HttpCode = HttpStatusCode.OK;
}
}
else
{
// HTTP Request
this.RequestType = lRequestHeaderValues[0];
this.RequestPath = lRequestHeaderValues[1];
this.RequestVersion = lRequestHeaderValues[2];
if (this.RequestVersion.StartsWith("HTTP/"))
this.RequestVersion = RequestVersion.Substring(5);
}
}
#endregion