public static HandshakeRequest Parse(string [] headerParts)
{
var requestLine = headerParts [0].Split (new char [] { ' ' }, 3);
if (requestLine.Length != 3)
throw new ArgumentException ("Invalid request line: " + headerParts [0]);
var headers = new WebHeaderCollection ();
for (int i = 1; i < headerParts.Length; i++)
headers.SetInternal (headerParts [i], false);
return new HandshakeRequest {
Headers = headers,
HttpMethod = requestLine [0],
ProtocolVersion = new Version (requestLine [2].Substring (5)),
RawUrl = requestLine [1],
RequestUri = requestLine [1].ToUri ()
};
}