public Resource[] HeadCheck(IEnumerable<object> resources)
{
var pageResources = new List<Resource>();
foreach (var resource in resources.Where(r => r != null).Select(r => r.ToString()).Where(r => !string.IsNullOrWhiteSpace(r)))
{
string statusDescription;
HttpStatusCode statusCode;
var headers = new List<string>();
try
{
_client.DoGetUrlHeadOnly(resource);
}
catch
{
/* This will fail if for most status codes (404 would be the classic example).
* This can safely be ignored.
*/
}
finally
{
statusCode = _client.StatusCode;
statusDescription = _client.StatusDescription;
if (_client.ResponseHeaders != null)
{
headers.AddRange(from key in _client.ResponseHeaders.AllKeys where key != null select string.Format("{0}:{1}", key, _client.ResponseHeaders[key] ?? string.Empty));
}
}
pageResources.Add(
new Resource
{
Uri = resource,
StatusCode = statusCode,
StatusDescription = statusDescription,
Headers = headers
});
}
return pageResources.ToArray();
}