[System]: Fix System.IO.Compression.CompressionLevel enum.
[mono.git] / mcs / class / System / System.Net / HttpWebResponse.jvm.cs
index 97542bbafae39f92eaee6bb74c832b0de761d785..f22222b027f86a37f83d64509f1b885888babc7a 100644 (file)
@@ -8,7 +8,6 @@ using System.Security.Cryptography.X509Certificates;
 \r
 namespace System.Net\r
 {\r
-       \r
        [Serializable]\r
        public class HttpWebResponse : WebResponse,  IDisposable\r
        {\r
@@ -120,17 +119,16 @@ namespace System.Net
                {\r
                        get\r
                        {\r
-                               string contentType = ContentType;
-                               if (contentType == null)
-                                       return "ISO-8859-1";
-                               string val = contentType.ToLower ();                                    
-                               int pos = val.IndexOf ("charset=");
-                               if (pos == -1)
-                                       return "ISO-8859-1";
-                               pos += 8;
-                               int pos2 = val.IndexOf (';', pos);
-                               return (pos2 == -1)
-                                       ? contentType.Substring (pos) 
+                               string contentType = ContentType;\r
+                               if (contentType == null)\r
+                                       return "ISO-8859-1";\r
+                               int pos = contentType.IndexOf ("charset=", StringComparison.OrdinalIgnoreCase);\r
+                               if (pos == -1)\r
+                                       return "ISO-8859-1";\r
+                               pos += 8;\r
+                               int pos2 = contentType.IndexOf (';', pos);\r
+                               return (pos2 == -1)\r
+                                       ? contentType.Substring (pos) \r
                                        : contentType.Substring (pos, pos2 - pos);\r
                        }\r
                }\r
@@ -365,151 +363,172 @@ namespace System.Net
                        else\r
                                _version = null;\r
                }\r
-       \r
-               private void FillCookies()
-               {
-                       if(_state == null)
-                               return;
-
-                       mainsoft.apache.commons.httpclient.Cookie[] javaCookies =
-                               _state.getCookies();
-
-                       if(javaCookies == null)
-                               return;
-
-                       for(int i = 0; i < javaCookies.Length; i++)
-                       {
-                               bool httpsProtocol = _httpMethod.getURI().ToString().StartsWith("https");
-                               if(!httpsProtocol && javaCookies[i].getSecure())
-                                       continue;
-                               Cookie c = new Cookie(javaCookies[i].getName(), 
-                                       javaCookies[i].getValue(), 
-                                       (javaCookies[i].getPath() == null) ? "" : javaCookies[i].getPath(),
-                                       (javaCookies[i].getDomain() == null) ? "" : javaCookies[i].getDomain());
-                               java.util.Calendar jCalendar = java.util.Calendar.getInstance();
-                               java.util.Date jDate = javaCookies[i].getExpiryDate();
-                               if(jDate != null)
-                               {
-                                       jCalendar.setTime(javaCookies[i].getExpiryDate());
-                                       c.Expires = (DateTime) vmw.common.DateTimeUtils.CalendarToDateTime(jCalendar);
-                               }
-                               
-                               _cookies.Add(c);
-                       }
-
-               }
-
-               //todo remove unused methods
-               private void FillCookies_old ()
-               {
-                       
-                       string val = Headers["Set-Cookie"];
-                       if (val != null && val.Trim () != "")
-                               SetCookie (val);
-
-                       val = Headers["Set-Cookie2"];
-                       if (val != null && val.Trim () != "")
-                               SetCookie2 (val);
+\r
+               private mainsoft.apache.commons.httpclient.Cookie FindCookie (mainsoft.apache.commons.httpclient.Cookie [] cookies, string name) {\r
+                       for (int i = 0; i < cookies.Length; ++i)\r
+                               if (cookies [i].getName () == name)\r
+                                       return cookies [i];\r
+                       return null;\r
+               }\r
+\r
+               private mainsoft.apache.commons.httpclient.Cookie [] FetchResponseCookies (mainsoft.apache.commons.httpclient.Header [] headers,\r
+                                                                                                                                                               mainsoft.apache.commons.httpclient.Cookie [] stateCookies) {\r
+                       System.Collections.ArrayList list = new System.Collections.ArrayList();\r
+                       foreach (mainsoft.apache.commons.httpclient.Header h in headers) {\r
+                               foreach (mainsoft.apache.commons.httpclient.HeaderElement element in h.getValues ()) {\r
+                                       mainsoft.apache.commons.httpclient.Cookie c = FindCookie (stateCookies, element.getName ());\r
+                                       if (c != null)\r
+                                               list.Add(c);\r
+                               }\r
+                       }\r
+\r
+                       return (mainsoft.apache.commons.httpclient.Cookie[]) list.ToArray(typeof(mainsoft.apache.commons.httpclient.Cookie));\r
+               }\r
+\r
+               private void FillCookies ()\r
+               {\r
+                       if(_state == null)\r
+                               return;\r
+\r
+                       mainsoft.apache.commons.httpclient.Cookie[] javaCookies =\r
+                               _state.getCookies();\r
+\r
+                       if(javaCookies == null)\r
+                               return;\r
+\r
+                       mainsoft.apache.commons.httpclient.Header [] headers = _httpMethod.getResponseHeaders ("Set-Cookie");\r
+                       if (headers != null)\r
+                               javaCookies = FetchResponseCookies (headers, javaCookies);                                              \r
+\r
+                       for(int i = 0; i < javaCookies.Length; i++)\r
+                       {\r
+                               bool httpsProtocol = _httpMethod.getURI().ToString().StartsWith("https");\r
+                               if(!httpsProtocol && javaCookies[i].getSecure())\r
+                                       continue;\r
+                               Cookie c = new Cookie(javaCookies[i].getName(), \r
+                                       javaCookies[i].getValue(), \r
+                                       (javaCookies[i].getPath() == null) ? "" : javaCookies[i].getPath(),\r
+                                       (javaCookies[i].getDomain() == null) ? "" : javaCookies[i].getDomain());\r
+                               java.util.Calendar jCalendar = java.util.Calendar.getInstance();\r
+                               java.util.Date jDate = javaCookies[i].getExpiryDate();\r
+                               if(jDate != null)\r
+                               {\r
+                                       jCalendar.setTime(javaCookies[i].getExpiryDate());\r
+                                       c.Expires = (DateTime) vmw.common.DateTimeUtils.CalendarToDateTime(jCalendar);\r
+                               }\r
+                               \r
+                               _cookies.Add(c);\r
+                       }\r
+\r
+               }\r
+\r
+               //todo remove unused methods\r
+               private void FillCookies_old ()\r
+               {\r
+                       \r
+                       string val = Headers["Set-Cookie"];\r
+                       if (val != null && val.Trim () != "")\r
+                               SetCookie (val);\r
+\r
+                       val = Headers["Set-Cookie2"];\r
+                       if (val != null && val.Trim () != "")\r
+                               SetCookie2 (val);\r
                }\r
 \r
-               static string [] SplitValue (string input)
-               {
-                       string [] result = new string [2];
-                       int eq = input.IndexOf ('=');
+               static string [] SplitValue (string input)\r
+               {\r
+                       string [] result = new string [2];\r
+                       int eq = input.IndexOf ('=');\r
                        if (eq == -1) \r
-                       {
-                               result [0] = "invalid";
+                       {\r
+                               result [0] = "invalid";\r
                        } \r
                        else \r
-                       {
-                               result [0] = input.Substring (0, eq).Trim ().ToUpper ();
-                               result [1] = input.Substring (eq + 1);
-                       }
-                       
-                       return result;
+                       {\r
+                               result [0] = input.Substring (0, eq).Trim ().ToUpper ();\r
+                               result [1] = input.Substring (eq + 1);\r
+                       }\r
+                       \r
+                       return result;\r
                }\r
 \r
                private void SetCookie(string val)\r
                {\r
-//                     Console.WriteLine("in set cookie 1 - got value : " + val);
-                       string[] parts = null;
-                       Collections.Queue options = null;
-                       Cookie cookie = null;
-
-                       options = new Collections.Queue (val.Split (';'));
-                       parts = SplitValue ((string) options.Dequeue()); // NAME=VALUE must be first
-
-                       cookie = new Cookie (parts[0], parts[1]);
-
+//                     Console.WriteLine("in set cookie 1 - got value : " + val);\r
+                       string[] parts = null;\r
+                       Collections.Queue options = null;\r
+                       Cookie cookie = null;\r
+\r
+                       options = new Collections.Queue (val.Split (';'));\r
+                       parts = SplitValue ((string) options.Dequeue()); // NAME=VALUE must be first\r
+\r
+                       cookie = new Cookie (parts[0], parts[1]);\r
+\r
                        while (options.Count > 0) \r
-                       {
-                               parts = SplitValue ((string) options.Dequeue());
+                       {\r
+                               parts = SplitValue ((string) options.Dequeue());\r
                                switch (parts [0]) \r
-                               {
-                                       case "COMMENT":
-                                               if (cookie.Comment == null)
-                                                       cookie.Comment = parts[1];
-                                               break;
-                                       case "COMMENTURL":
-                                               if (cookie.CommentUri == null)
-                                                       cookie.CommentUri = new Uri(parts[1]);
-                                               break;
-                                       case "DISCARD":
-                                               cookie.Discard = true;
-                                               break;
-                                       case "DOMAIN":
-                                               if (cookie.Domain == "")
-                                                       cookie.Domain = parts[1];
-                                               break;
-                                       case "MAX-AGE": // RFC Style Set-Cookie2
-                                               if (cookie.Expires == DateTime.MinValue)
-                                                       cookie.Expires = cookie.TimeStamp.AddSeconds (Int32.Parse (parts[1]));
-                                               break;
-                                       case "EXPIRES": // Netscape Style Set-Cookie
+                               {\r
+                                       case "COMMENT":\r
+                                               if (cookie.Comment == null)\r
+                                                       cookie.Comment = parts[1];\r
+                                               break;\r
+                                       case "COMMENTURL":\r
+                                               if (cookie.CommentUri == null)\r
+                                                       cookie.CommentUri = new Uri(parts[1]);\r
+                                               break;\r
+                                       case "DISCARD":\r
+                                               cookie.Discard = true;\r
+                                               break;\r
+                                       case "DOMAIN":\r
+                                               if (cookie.Domain == "")\r
+                                                       cookie.Domain = parts[1];\r
+                                               break;\r
+                                       case "MAX-AGE": // RFC Style Set-Cookie2\r
+                                               if (cookie.Expires == DateTime.MinValue)\r
+                                                       cookie.Expires = cookie.TimeStamp.AddSeconds (Int32.Parse (parts[1]));\r
+                                               break;\r
+                                       case "EXPIRES": // Netscape Style Set-Cookie\r
                                                if (cookie.Expires == DateTime.MinValue) \r
-                                               {
-                                                       //FIXME: Does DateTime parse something like: "Sun, 17-Jan-2038 19:14:07 GMT"?
-                                                       //cookie.Expires = DateTime.ParseExact (parts[1]);
-                                                       cookie.Expires = DateTime.Now.AddDays (1);
-                                               }
-                                               break;
-                                       case "PATH":
-                                               cookie.Path = parts[1];
-                                               break;
-                                       case "PORT":
-                                               if (cookie.Port == null)
-                                                       cookie.Port = parts[1];
-                                               break;
-                                       case "SECURE":
-                                               cookie.Secure = true;
-                                               break;
-                                       case "VERSION":
-                                               cookie.Version = Int32.Parse (parts[1]);
-                                               break;
-                               } // switch
-                       } // while
-
-                       if (_cookies == null)
-                               _cookies = new CookieCollection();
-
-                       if (cookie.Domain == "")
-                               cookie.Domain = _uri.Host;
-
-//                     Console.WriteLine("adding cookie " + cookie + " to collection");
-                       _cookies.Add (cookie);
-//                     Console.WriteLine("exit from method...");
+                                               {\r
+                                                       //FIXME: Does DateTime parse something like: "Sun, 17-Jan-2038 19:14:07 GMT"?\r
+                                                       //cookie.Expires = DateTime.ParseExact (parts[1]);\r
+                                                       cookie.Expires = DateTime.Now.AddDays (1);\r
+                                               }\r
+                                               break;\r
+                                       case "PATH":\r
+                                               cookie.Path = parts[1];\r
+                                               break;\r
+                                       case "PORT":\r
+                                               if (cookie.Port == null)\r
+                                                       cookie.Port = parts[1];\r
+                                               break;\r
+                                       case "SECURE":\r
+                                               cookie.Secure = true;\r
+                                               break;\r
+                                       case "VERSION":\r
+                                               cookie.Version = Int32.Parse (parts[1]);\r
+                                               break;\r
+                               } // switch\r
+                       } // while\r
+\r
+                       if (_cookies == null)\r
+                               _cookies = new CookieCollection();\r
+\r
+                       if (cookie.Domain == "")\r
+                               cookie.Domain = _uri.Host;\r
+\r
+//                     Console.WriteLine("adding cookie " + cookie + " to collection");\r
+                       _cookies.Add (cookie);\r
+//                     Console.WriteLine("exit from method...");\r
                }               \r
                \r
-               private void SetCookie2 (string cookies_str)
-               {
-                       string [] cookies = cookies_str.Split (',');
-                       foreach (string cookie_str in cookies)
-                               SetCookie (cookie_str);
+               private void SetCookie2 (string cookies_str)\r
+               {\r
+                       string [] cookies = cookies_str.Split (',');\r
+                       foreach (string cookie_str in cookies)\r
+                               SetCookie (cookie_str);\r
                }\r
                #endregion\r
-\r
        }\r
-\r
 }\r
-\r
-\r