2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / System.Web / System.Web.Handlers / AssemblyResourceLoader.cs
index fd8acefe787b7bb08ef213c184892dbbf4fd969f..c7170931b4c9873998915ab4c7d4500c4c0d0efb 100644 (file)
@@ -7,6 +7,27 @@
 // (C) 2003 Ben Maurer
 //
 
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
 using System.Web;
 using System.Web.UI;
 using System.Reflection;
@@ -14,7 +35,7 @@ using System.IO;
 
 namespace System.Web.Handlers {
        [MonoTODO ("Should we cache stuff?")]
-       #if NET_1_2
+       #if NET_2_0
        public
        #else
        internal // since this is in the .config file, we need to support it, since we dont have versoned support.
@@ -23,18 +44,24 @@ namespace System.Web.Handlers {
                
                internal static string GetResourceUrl (Type type, string resourceName)
                {
-                       return "WebResource.axd?assembly=" 
-                               + HttpUtility.UrlEncode (type.Assembly.GetName ().FullName) 
-                               + "&resource=" 
+                       string aname = type.Assembly == typeof(AssemblyResourceLoader).Assembly ? "s" : HttpUtility.UrlEncode (type.Assembly.GetName ().FullName);
+                       return "WebResource.axd?a=" 
+                               + aname 
+                               + "&r=" 
                                + HttpUtility.UrlEncode (resourceName);
                }
 
-                       
+       
                [MonoTODO ("Substitution not implemented")]
-               private void System.Web.IHttpHandler.ProcessRequest (HttpContext context)
+               void System.Web.IHttpHandler.ProcessRequest (HttpContext context)
                {
-                       string resourceName = context.Request.QueryString ["resource"];
-                       Assembly assembly = Assembly.Load (context.Request.QueryString ["assembly"]);
+#if NET_2_0
+                       string resourceName = context.Request.QueryString ["r"];
+                       string asmName = context.Request.QueryString ["a"];
+                       Assembly assembly;
+                       
+                       if (asmName == null || asmName == "s") assembly = GetType().Assembly;
+                       else assembly = Assembly.Load (asmName);
                        
                        bool found = false;
                        foreach (WebResourceAttribute wra in assembly.GetCustomAttributes (typeof (WebResourceAttribute), false)) {
@@ -60,9 +87,10 @@ namespace System.Web.Handlers {
                                c = s.Read (buf, 0, 1024);
                                output.Write (buf, 0, c);
                        } while (c > 0);
+#endif
                }
                
-               private bool System.Web.IHttpHandler.IsReusable { get { return true; } }
+               bool System.Web.IHttpHandler.IsReusable { get { return true; } }
        }
 }