public void GetDbResourcesTest() { DbResourceDataManager manager = new DbResourceDataManager(); Dictionary <string, object> items = manager.GetResourceSetNormalizedForLocaleId("de-de", "resources"); WriteResourceDictionary(items, "DB Resources"); }
public void GetDbResourcesTest() { DbResourceDataManager manager = new DbResourceDataManager(); Dictionary<string,object> items = manager.GetResourceSetNormalizedForLocaleId("de-de", "resources"); WriteResourceDictionary(items, "DB Resources"); }
public void ProcessRequest(HttpContext context) { HttpRequest Request = HttpContext.Current.Request; HttpResponse Response = HttpContext.Current.Response; string resourceSet = Request.Params["ResourceSet"]; string localeId = Request.Params["LocaleId"] ?? ""; string resourceType = Request.Params["ResourceType"] ?? "Resx"; // Resx/ResDb bool includeControls = (Request.Params["IncludeControls"] ?? "") != ""; string varname = Request.Params["VarName"] ?? "resources"; string resourceMode = (Request.Params["ResourceMode"] ?? "0"); // varname is embedded into script so validate to avoid script injection // it's gotta be a valid C# and valid JavaScript name Match match = Regex.Match(varname, @"^[\w|\d|_|$|@|\.]*$"); if (match.Length < 1 || match.Groups[0].Value != varname) { SendErrorResponse("Invalid variable name passed."); } if (string.IsNullOrEmpty(resourceSet)) { SendErrorResponse("Invalid ResourceSet specified."); } Dictionary <string, object> resDict = null; if (resourceType.ToLower() == "resdb") { DbResourceDataManager manager = new DbResourceDataManager(); resDict = manager.GetResourceSetNormalizedForLocaleId(localeId, resourceSet) as Dictionary <string, object>; } else // Resx Resources { DbResXConverter converter = new DbResXConverter(); // must figure out the path string resxPath = null; //if (DbResourceConfiguration.Current.ResxExportProjectType == GlobalizationResxExportProjectTypes.WebForms) // resxPath = converter.FormatWebResourceSetPath(resourceSet, (resourceMode == "0") ); //else resxPath = converter.FormatResourceSetPath(resourceSet); resDict = converter.GetResXResourcesNormalizedForLocale(resxPath, localeId) as Dictionary <string, object>; } if (resourceMode == "0" && !includeControls) { // filter the list to strip out controls (anything that contains a . in the ResourceId // is considered a control value resDict = resDict.Where(res => !res.Key.Contains('.') && res.Value is string) .ToDictionary(dict => dict.Key, dict => dict.Value); } else { // return all resource strings resDict = resDict.Where(res => res.Value is string) .ToDictionary(dict => dict.Key, dict => dict.Value); } string javaScript = SerializeResourceDictionary(resDict, varname); // client cache if (!HttpContext.Current.IsDebuggingEnabled) { Response.ExpiresAbsolute = DateTime.UtcNow.AddDays(30); Response.Cache.SetLastModified(DateTime.UtcNow); Response.AppendHeader("Accept-Ranges", "bytes"); Response.AppendHeader("Vary", "Accept-Encoding"); Response.Cache.SetETag("\"" + javaScript.GetHashCode().ToString("x") + "\""); Response.Cache.SetLastModified(DateTime.UtcNow); } // OutputCache settings HttpCachePolicy cache = Response.Cache; cache.VaryByParams["LocaleId"] = true; cache.VaryByParams["ResoureType"] = true; cache.VaryByParams["IncludeControls"] = true; cache.VaryByParams["VarName"] = true; cache.VaryByParams["ResourceMode"] = true; //cache.SetOmitVaryStar(true); DateTime now = DateTime.Now; cache.SetCacheability(HttpCacheability.Public); cache.SetExpires(now + TimeSpan.FromDays(10)); cache.SetValidUntilExpires(true); cache.SetLastModified(now); SendTextOutput(javaScript, "application/javascript"); }