/// <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.QueryString["lang"]; if (string.IsNullOrEmpty(lang)) { // Use the current Language if the lang query isn't set. lang = BlogSettings.Instance.Language; } lang = lang.ToLowerInvariant(); string cacheKey = "resource.axd - " + lang; string script = (string)Blog.CurrentInstance.Cache[cacheKey]; if (String.IsNullOrEmpty(script)) { System.Globalization.CultureInfo culture = null; try { // This needs to be in a try-catch because there's no other // way to find an invalid culture/language string. culture = new System.Globalization.CultureInfo(lang); } catch (Exception) { // set to default language otherwise. culture = Utils.GetDefaultCulture(); } Json.JsonCulture jc = new Json.JsonCulture(culture); // Although this handler is intended to output resource strings, // also outputting other non-resource variables. StringBuilder sb = new StringBuilder(); sb.AppendFormat("BlogEngine.webRoot='{0}';", Utils.RelativeWebRoot); sb.AppendFormat("BlogEngine.applicationWebRoot='{0}';", Utils.ApplicationRelativeWebRoot); sb.AppendFormat("BlogEngine.blogInstanceId='{0}';", Blog.CurrentInstance.Id); sb.AppendFormat("BlogEngine.i18n = {0};", jc.ToJsonString()); script = sb.ToString(); 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); } }
/// <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.QueryString["lang"]; if (string.IsNullOrEmpty(lang)) { // Use the current Language if the lang query isn't set. lang = BlogSettings.Instance.Language; } lang = lang.ToLowerInvariant(); string cacheKey = "resource.axd - " + lang; string script = (string)context.Cache[cacheKey]; if (String.IsNullOrEmpty(script)) { System.Globalization.CultureInfo culture = null; try { // This needs to be in a try-catch because there's no other // way to find an invalid culture/language string. culture = new System.Globalization.CultureInfo(lang); } catch (Exception) { // set to default language otherwise. culture = Utils.GetDefaultCulture(); } Json.JsonCulture jc = new Json.JsonCulture(culture); // Although this handler is intended to output resource strings, // also outputting other non-resource variables. StringBuilder sb = new StringBuilder(); sb.AppendFormat("BlogEngine.webRoot='{0}';", Utils.RelativeWebRoot); sb.AppendFormat("BlogEngine.i18n = {0};", jc.ToJsonString()); script = sb.ToString(); HttpContext.Current.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); } }