Added hammock project to debug streaming issues
[pithos-ms-client] / trunk / hammock / src / net35 / Hammock / Web / BasicAuthWebQuery.cs
1 using System;
2 using System.Net;
3 using Hammock.Extensions;
4
5 namespace Hammock.Web
6 {
7     /// <summary>
8     /// A web query engine for making requests that use basic HTTP authorization.
9     /// </summary>
10     public class BasicAuthWebQuery : WebQuery
11     {
12         private readonly string _password;
13         private readonly string _username;
14
15         public BasicAuthWebQuery(IWebQueryInfo info, string username, string password, bool enableTrace) : this(info, enableTrace)
16         {
17             _username = username;
18             _password = password;
19         }
20
21         public BasicAuthWebQuery(IWebQueryInfo info, bool enableTrace) : base(info, enableTrace)
22         {
23
24         }
25
26         public bool HasAuth
27         {
28             get
29             {
30                 return
31                     (!_username.IsNullOrBlank()
32                      && !String.IsNullOrEmpty(_password));
33             }
34         }
35
36         protected override void SetAuthorizationHeader(WebRequest request, string header)
37         {
38             if (!HasAuth)
39             {
40                 return;
41             }
42
43             var credentials = GetAuthorizationHeader();
44             request.Headers[header] = credentials;
45         }
46
47         private string GetAuthorizationHeader()
48         {
49             return WebExtensions.ToBasicAuthorizationHeader(_username, _password);
50         }
51
52         protected override void AuthenticateRequest(WebRequest request)
53         {
54             SetAuthorizationHeader(request, "Authorization");
55         }
56
57         public override string GetAuthorizationContent()
58         {
59             return GetAuthorizationHeader();
60         }
61     }
62 }