/// <summary> /// Enables processing of HTTP Web requests by a custom /// HttpHandler that implements the <see cref="T:System.Web.IHttpHandler"></see> interface. /// </summary> /// <param name="context"> /// An <see cref="T:System.Web.HttpContext"></see> object that provides /// references to the intrinsic server objects /// (for example, Request, Response, Session, and Server) used to service HTTP requests. /// </param> public void ProcessRequest(HttpContext context) { var request = context.Request; var lang = request.FilePath; lang = lang.Replace(".res.axd", ""); if (lang.IndexOf("/") >= 0) lang = lang.Substring(lang.LastIndexOf("/") + 1); if (string.IsNullOrEmpty(lang)) { // Use the current Language if the lang query isn't set. lang = BlogSettings.Instance.Language; } lang = lang.ToLowerInvariant(); var sb = new StringBuilder(); string cacheKey; string script; if (request.FilePath.Contains("admin.res.axd")) { lang = BlogSettings.Instance.Culture; cacheKey = "admin.resource.axd - " + lang; script = (string)Blog.CurrentInstance.Cache[cacheKey]; if (String.IsNullOrEmpty(script)) { System.Globalization.CultureInfo culture; try { culture = new System.Globalization.CultureInfo(lang); } catch (Exception) { culture = Utils.GetDefaultCulture(); } var jc = new JsonCulture(culture, JsonCulture.ResourceType.Admin); sb.Append("BlogAdmin = { i18n: " + jc.ToJsonString() + "};"); script = sb.ToString(); } } else { cacheKey = "resource.axd - " + lang; script = (string)Blog.CurrentInstance.Cache[cacheKey]; if (String.IsNullOrEmpty(script)) { System.Globalization.CultureInfo culture; try { culture = new System.Globalization.CultureInfo(lang); } catch (Exception) { culture = Utils.GetDefaultCulture(); } var jc = new JsonCulture(culture, JsonCulture.ResourceType.Blog); // Although this handler is intended to output resource strings, // also outputting other non-resource variables. sb.AppendFormat("webRoot: '{0}',", Utils.RelativeWebRoot); sb.AppendFormat("applicationWebRoot: '{0}',", Utils.ApplicationRelativeWebRoot); sb.AppendFormat("blogInstanceId: '{0}',", Blog.CurrentInstance.Id); sb.AppendFormat("fileExtension: '{0}',", BlogConfig.FileExtension); sb.AppendFormat("i18n: {0}", jc.ToJsonString()); script = "BlogEngineRes = {" + sb + "};"; } } Blog.CurrentInstance.Cache.Insert(cacheKey, script, null, Cache.NoAbsoluteExpiration, new TimeSpan(3, 0, 0, 0)); SetHeaders(script.GetHashCode(), context); context.Response.Write(script); if (BlogSettings.Instance.EnableHttpCompression) { CompressionModule.CompressResponse(context); // Compress(context); } }