2002-07-26 Tim Coleman <tim@timcoleman.com>
[mono.git] / mcs / class / System.Web.Services / System.Web.Services.Protocols / HttpWebClientProtocol.cs
1 // \r
2 // System.Web.Services.Protocols.HttpWebClientProtocol.cs\r
3 //\r
4 // Author:\r
5 //   Tim Coleman (tim@timcoleman.com)\r
6 //\r
7 // Copyright (C) Tim Coleman, 2002\r
8 //\r
9 \r
10 using System;\r
11 using System.ComponentModel;\r
12 using System.Net;\r
13 using System.Security.Cryptography.X509Certificates;\r
14 using System.Threading;\r
15 using System.Web.Services;\r
16 \r
17 namespace System.Web.Services.Protocols {\r
18         public abstract class HttpWebClientProtocol : WebClientProtocol {\r
19 \r
20                 #region Fields\r
21 \r
22                 bool allowAutoRedirect;\r
23                 X509CertificateCollection clientCertificates;\r
24                 CookieContainer cookieContainer;\r
25                 IWebProxy proxy;\r
26                 string userAgent;\r
27 \r
28                 #endregion\r
29 \r
30                 #region Constructors\r
31 \r
32                 protected HttpWebClientProtocol () \r
33                 {\r
34                         allowAutoRedirect = false;\r
35                         clientCertificates = new X509CertificateCollection ();\r
36                         cookieContainer = null;\r
37                         proxy = null; // FIXME\r
38                         userAgent = String.Format ("Mono Web Services Client Protocol {0}", Environment.Version);\r
39                 }\r
40                 \r
41                 #endregion // Constructors\r
42 \r
43                 #region Properties\r
44 \r
45                 [DefaultValue (false)]\r
46                 [WebServicesDescription ("Enable automatic handling of server redirects.")]\r
47                 public bool AllowAutoRedirect {\r
48                         get { return allowAutoRedirect; }\r
49                         set { allowAutoRedirect = value; }\r
50                 }\r
51 \r
52                 [Browsable (false)]\r
53                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]\r
54                 [WebServicesDescription ("The client certificates that will be sent to the server, if the server requests them.")]\r
55                 public X509CertificateCollection ClientCertificates {\r
56                         get { return clientCertificates; }\r
57                 }\r
58 \r
59                 [DefaultValue (null)]\r
60                 [WebServicesDescription ("A container for all cookies received from servers in the current session.")]\r
61                 public CookieContainer CookieContainer {\r
62                         get { return cookieContainer; }\r
63                         set { cookieContainer = value; }\r
64                 }\r
65 \r
66                 [Browsable (false)]\r
67                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]\r
68                 public IWebProxy Proxy {\r
69                         get { return proxy; }\r
70                         set { proxy = value; }\r
71                 }\r
72 \r
73                 [WebServicesDescription ("Sets the user agent http header for the request.")]\r
74                 public string UserAgent {\r
75                         get { return userAgent; }\r
76                         set { userAgent = value; }\r
77                 }\r
78 \r
79                 #endregion // Properties\r
80 \r
81                 #region Methods\r
82 \r
83                 protected override WebRequest GetWebRequest (Uri uri)\r
84                 {\r
85                         if (null == uri)\r
86                                 throw new InvalidOperationException ("The uri parameter is a null reference.");\r
87                         return WebRequest.Create (uri);\r
88                 }\r
89 \r
90                 protected override WebResponse GetWebResponse (WebRequest request)\r
91                 {\r
92                         return request.GetResponse ();\r
93                 }\r
94 \r
95                 protected override WebResponse GetWebResponse (WebRequest request, IAsyncResult result)\r
96                 {\r
97                         IAsyncResult ar = request.BeginGetResponse (null, null);\r
98                         ar.AsyncWaitHandle.WaitOne ();\r
99                         return request.EndGetResponse (result);\r
100                 }\r
101 \r
102                 #endregion // Methods\r
103         }\r
104 }\r