HttpWebRequest Open(Uri url, string method, IMiner miner, string comment)
{
// method requires an absolute url to function
if (!url.IsAbsoluteUri)
return null;
// extract user information from url
var user = url.UserInfo
.Split(':')
.Select(i => HttpUtility.UrlDecode(i))
.ToArray();
// create request, authenticating using information in the url
var req = (HttpWebRequest)HttpWebRequest.Create(url);
req.Timeout = (int)TimeSpan.FromSeconds(60).TotalMilliseconds;
req.Credentials = new NetworkCredential(user[0], user[1]);
req.PreAuthenticate = true;
req.Method = method;
req.Pipelined = true;
req.UserAgent = "BitMaker";
req.Headers["X-BitMaker-MachineName"] = Environment.MachineName;
if (miner != null)
req.Headers["X-BitMaker-Miner"] = miner.GetType().Name;
if (!string.IsNullOrWhiteSpace(comment))
req.Headers["X-BitMaker-Comment"] = comment;
return req;
}