public void ProcessFile(HttpContext context, RouteData routeData, CacheRequest req) { CacheDefinition src = null; if (Cache.HashToSource.TryGetValue(req.Hash, out src)) { // Set Headers var ext = req.Path.EndsWith(".js.package") ? ".js" : req.Path.EndsWith(".css.pacakge") ? ".css" : Path.GetExtension(req.Path); switch (ext) { case ".png": case ".jpg": case ".jpeg": case ".gif": // Determine we need additional headers // Transmit file here. break; case ".js": case ".css": context.Response.Write(src.FullRawSource.CombinedSource[0].InnerText); return; default: return; } } else { context.Response.Cache.SetCacheability(HttpCacheability.NoCache); context.Response.StatusCode = 403; context.Response.Write("Invalid Request"); } }
public void ProcessRequest(HttpContext context) { var routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current)); var req = new CacheRequest { Hash = (routeData.Values["hash"] ?? "").ToString(), Type = (routeData.Values["type"] ?? "").ToString(), Path = (routeData.Values["path"] ?? "").ToString() }; if (TypeSet.Contains(req.Type)) { ProcessFile(context, routeData, req); } else { context.Response.Cache.SetCacheability(HttpCacheability.NoCache); context.Response.StatusCode = 403; context.Response.Write("Invalid Request"); } }