private void ParseHeaders(HttpClient client)
{
Headers = CreateCollection(client.Headers);
string header;
// Parse Accept.
if (client.Headers.TryGetValue("Accept", out header))
{
string[] parts = header.Split(',');
HttpUtil.TrimAll(parts);
AcceptTypes = parts;
}
else
{
AcceptTypes = EmptyStringArray;
}
// Parse Content-Type.
if (client.Headers.TryGetValue("Content-Type", out header))
{
string[] parts = header.Split(new[] { ';' }, 2);
ContentType = parts[0].Trim();
if (parts.Length == 2)
{
string[] encoding = parts[1].Trim().Split(new[] { '=' }, 2);
if (encoding.Length == 2 && String.Equals(encoding[0], "charset", StringComparison.OrdinalIgnoreCase))
{
ContentEncoding = Encoding.GetEncoding(encoding[1]);
}
}
}
// Parse Content-Length.
if (client.Headers.TryGetValue("Content-Length", out header))
{
int contentLength;
if (int.TryParse(header, out contentLength))
ContentLength = contentLength;
}
// Parse Referer.
if (client.Headers.TryGetValue("Referer", out header))
UrlReferer = new Uri(header);
// Parse User-Agent.
if (client.Headers.TryGetValue("User-Agent", out header))
UserAgent = header;
// Parse Accept-Language.
if (client.Headers.TryGetValue("Accept-Language", out header))
{
string[] parts = header.Split(',');
HttpUtil.TrimAll(parts);
UserLanguages = parts;
}
else
{
UserLanguages = EmptyStringArray;
}
// Parse Cookie.
Cookies = new HttpCookieCollection();
if (client.Headers.TryGetValue("Cookie", out header))
{
string[] parts = header.Split(';');
foreach (string part in parts)
{
string[] partParts = part.Split(new[] { '=' }, 2);
string name = partParts[0].Trim();
string value = partParts.Length == 1 ? null : partParts[1];
Cookies.AddCookie(new HttpCookie(name, value), true);
}
}
}