Statistics
| Branch: | Revision:

root / trunk / hammock / src / net35 / Hammock / Web / BasicAuthWebQuery.cs @ 0eea575a

History | View | Annotate | Download (1.6 kB)

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
}