فهرست منبع

2010-03-01 Miguel de Icaza <[email protected]>

        * WebHeaderCollection.cs: Apply 2 year old patch from Yves Bastide that fixes the keys
        casing in the collection;   Fixes 325491


svn path=/trunk/mcs/; revision=152734
Miguel de Icaza 16 سال پیش
والد
کامیت
2ac437cdfc

+ 5 - 0
mcs/class/System/System.Net/ChangeLog

@@ -1,3 +1,8 @@
+2010-03-01  Miguel de Icaza  <[email protected]>
+
+	* WebHeaderCollection.cs: Apply 2 year old patch from Yves Bastide
+	that fixes the keys casing in the collection; Fixes 325491
+
 2010-03-01 Gonzalo Paniagua Javier <[email protected]>
 
 	* WebConnection.cs: attach a validation callback to the new

+ 70 - 70
mcs/class/System/System.Net/WebHeaderCollection.cs

@@ -415,87 +415,87 @@ namespace System.Net
 		{
 			switch (value){
 			case HttpRequestHeader.CacheControl:
-				return "cache-control";
+				return "Cache-Control";
 			case HttpRequestHeader.Connection:
-				return "connection";
+				return "Connection";
 			case HttpRequestHeader.Date:
-				return "date";
+				return "Date";
 			case HttpRequestHeader.KeepAlive:
-				return "keep-alive";
+				return "Keep-Alive";
 			case HttpRequestHeader.Pragma:
-				return "pragma";
+				return "Pragma";
 			case HttpRequestHeader.Trailer:
-				return "trailer";
+				return "Trailer";
 			case HttpRequestHeader.TransferEncoding:
-				return "transfer-encoding";
+				return "Transfer-Encoding";
 			case HttpRequestHeader.Upgrade:
-				return "upgrade";
+				return "Upgrade";
 			case HttpRequestHeader.Via:
-				return "via";
+				return "Via";
 			case HttpRequestHeader.Warning:
-				return "warning";
+				return "Warning";
 			case HttpRequestHeader.Allow:
-				return "allow";
+				return "Allow";
 			case HttpRequestHeader.ContentLength:
-				return "content-length";
+				return "Content-Length";
 			case HttpRequestHeader.ContentType:
-				return "content-type";
+				return "Content-Type";
 			case HttpRequestHeader.ContentEncoding:
-				return "content-encoding";
+				return "Content-Encoding";
 			case HttpRequestHeader.ContentLanguage:
-				return "content-language";
+				return "Content-Language";
 			case HttpRequestHeader.ContentLocation:
-				return "content-location";
+				return "Content-Location";
 			case HttpRequestHeader.ContentMd5:
-				return "content-md5";
+				return "Content-MD5";
 			case HttpRequestHeader.ContentRange:
-				return "content-range";
+				return "Content-Range";
 			case HttpRequestHeader.Expires:
-				return "expires";
+				return "Expires";
 			case HttpRequestHeader.LastModified:
-				return "last-modified";
+				return "Last-Modified";
 			case HttpRequestHeader.Accept:
-				return "accept";
+				return "Accept";
 			case HttpRequestHeader.AcceptCharset:
-				return "accept-charset";
+				return "Accept-Charset";
 			case HttpRequestHeader.AcceptEncoding:
-				return "accept-encoding";
+				return "Accept-Encoding";
 			case HttpRequestHeader.AcceptLanguage:
 				return "accept-language";
 			case HttpRequestHeader.Authorization:
-				return "authorization";
+				return "Authorization";
 			case HttpRequestHeader.Cookie:
-				return "cookie";
+				return "Cookie";
 			case HttpRequestHeader.Expect:
-				return "expect";
+				return "Expect";
 			case HttpRequestHeader.From:
-				return "from";
+				return "From";
 			case HttpRequestHeader.Host:
-				return "host";
+				return "Host";
 			case HttpRequestHeader.IfMatch:
-				return "if-match";
+				return "If-Match";
 			case HttpRequestHeader.IfModifiedSince:
-				return "if-modified-since";
+				return "If-Modified-Since";
 			case HttpRequestHeader.IfNoneMatch:
-				return "if-none-match";
+				return "If-None-Match";
 			case HttpRequestHeader.IfRange:
-				return "if-range";
+				return "If-Range";
 			case HttpRequestHeader.IfUnmodifiedSince:
-				return "if-unmodified-since";
+				return "If-Unmodified-Since";
 			case HttpRequestHeader.MaxForwards:
-				return "max-forwards";
+				return "Max-Forwards";
 			case HttpRequestHeader.ProxyAuthorization:
-				return "proxy-authorization";
+				return "Proxy-Authorization";
 			case HttpRequestHeader.Referer:
-				return "referer";
+				return "Referer";
 			case HttpRequestHeader.Range:
-				return "range";
+				return "Range";
 			case HttpRequestHeader.Te:
-				return "te";
+				return "TE";
 			case HttpRequestHeader.Translate:
-				return "translate";
+				return "Translate";
 			case HttpRequestHeader.UserAgent:
-				return "user-agent";
+				return "User-Agent";
 			default:
 				throw new InvalidOperationException ();
 			}
@@ -517,65 +517,65 @@ namespace System.Net
 		{
 			switch (value){
 			case HttpResponseHeader.CacheControl:
-				return "cache-control";
+				return "Cache-Control";
 			case HttpResponseHeader.Connection:
-				return "connection";
+				return "Connection";
 			case HttpResponseHeader.Date:
-				return "date";
+				return "Date";
 			case HttpResponseHeader.KeepAlive:
-				return "keep-alive";
+				return "Keep-Alive";
 			case HttpResponseHeader.Pragma:
-				return "pragma";
+				return "Pragma";
 			case HttpResponseHeader.Trailer:
-				return "trailer";
+				return "Trailer";
 			case HttpResponseHeader.TransferEncoding:
-				return "transfer-encoding";
+				return "Transfer-Encoding";
 			case HttpResponseHeader.Upgrade:
-				return "upgrade";
+				return "Upgrade";
 			case HttpResponseHeader.Via:
-				return "via";
+				return "Via";
 			case HttpResponseHeader.Warning:
-				return "warning";
+				return "Warning";
 			case HttpResponseHeader.Allow:
-				return "allow";
+				return "Allow";
 			case HttpResponseHeader.ContentLength:
-				return "content-length";
+				return "Content-Length";
 			case HttpResponseHeader.ContentType:
-				return "content-type";
+				return "Content-Type";
 			case HttpResponseHeader.ContentEncoding:
-				return "content-encoding";
+				return "Content-Encoding";
 			case HttpResponseHeader.ContentLanguage:
-				return "content-language";
+				return "Content-Language";
 			case HttpResponseHeader.ContentLocation:
-				return "content-location";
+				return "Content-Location";
 			case HttpResponseHeader.ContentMd5:
-				return "content-md5";
+				return "Content-MD5";
 			case HttpResponseHeader.ContentRange:
-				return "content-range";
+				return "Content-Range";
 			case HttpResponseHeader.Expires:
-				return "expires";
+				return "Expires";
 			case HttpResponseHeader.LastModified:
-				return "last-modified";
+				return "Last-Modified";
 			case HttpResponseHeader.AcceptRanges:
-				return "accept-ranges";
+				return "Accept-Ranges";
 			case HttpResponseHeader.Age:
-				return "age";
+				return "Age";
 			case HttpResponseHeader.ETag:
-				return "etag";
+				return "ETag";
 			case HttpResponseHeader.Location:
-				return "location";
+				return "Location";
 			case HttpResponseHeader.ProxyAuthenticate:
-				return "proxy-authenticate";
+				return "Proxy-Authenticate";
 			case HttpResponseHeader.RetryAfter:
-				return "RetryAfter";
+				return "Retry-After";
 			case HttpResponseHeader.Server:
-				return "server";
+				return "Server";
 			case HttpResponseHeader.SetCookie:
-				return "set-cookie";
+				return "Set-Cookie";
 			case HttpResponseHeader.Vary:
-				return "vary";
+				return "Vary";
 			case HttpResponseHeader.WwwAuthenticate:
-				return "www-authenticate";
+				return "WWW-Authenticate";
 			default:
 				throw new InvalidOperationException ();
 			}

+ 17 - 8
mcs/class/System/Test/System.Net/WebHeaderCollectionTest.cs

@@ -162,14 +162,14 @@ namespace MonoTests.System.Net
 		[Test]
 		public void Indexers ()
 		{
-#if NET_2_0
-		Assert.AreEqual ("Value1", ((NameValueCollection)col)[0], "#1.1");
-		//FIXME: test also HttpRequestHeader and HttpResponseHeader
-#else
-			Assert.AreEqual ("Value1", col [0], "#1");
-#endif
-			Assert.AreEqual ("Value1", col ["Name1"], "#2");
-			Assert.AreEqual ("Value1", col ["NAME1"], "#3");
+			Assert.AreEqual ("Value1", ((NameValueCollection)col)[0], "#1.1");
+			//FIXME: test also HttpRequestHeader and HttpResponseHeader
+			//FIXME: is this enough?
+			WebHeaderCollection w = new WebHeaderCollection ();
+			w [HttpRequestHeader.CacheControl] = "Value2";
+			Assertion.AssertEquals ("#1.2", "Value2", w [HttpRequestHeader.CacheControl]);
+			w [HttpResponseHeader.Pragma] = "Value3";
+			Assertion.AssertEquals ("#1.3", "Value3", w [HttpResponseHeader.Pragma]);
 		}
 
 		[Test]
@@ -217,6 +217,15 @@ namespace MonoTests.System.Net
 			col.Add ("Name3", "Value3a\r\n Value3b");
 			col.Add ("Name4", "   Value4   ");
 			Assert.AreEqual ("Name1: Value1,Value1b\r\nName2: Value2\r\nName3: Value3a\r\n Value3b\r\nName4: Value4\r\n\r\n", col.ToString (), "#1");
+			WebHeaderCollection w;
+			w = new WebHeaderCollection ();
+			w.Add (HttpResponseHeader.KeepAlive, "Value1");
+			w.Add (HttpResponseHeader.WwwAuthenticate, "Value2");
+			Assertion.AssertEquals ("#2", "Keep-Alive: Value1\r\nWWW-Authenticate: Value2\r\n\r\n", w.ToString ());
+			w = new WebHeaderCollection ();
+			w.Add (HttpRequestHeader.UserAgent, "Value1");
+			w.Add (HttpRequestHeader.ContentMd5, "Value2");
+			Assertion.AssertEquals ("#2", "User-Agent: Value1\r\nContent-MD5: Value2\r\n\r\n", w.ToString ());
 		}
 
 		[Test]