/// <summary> /// Returns the url for the composite file handler for the filePath specified. /// </summary> /// <param name="fileKey">The Base64 encoded file paths or the file map key used to lookup the required dependencies</param> /// <param name="type"></param> /// <param name="http"></param> /// <param name="urlType"></param> /// <returns></returns> public virtual string GetCompositeFileUrl( string fileKey, ClientDependencyType type, HttpContextBase http, CompositeUrlType urlType) { var url = new StringBuilder(); int version = GetVersion(); switch (urlType) { case CompositeUrlType.Base64QueryStrings: //Create a URL with a base64 query string const string handler = "{0}?s={1}&t={2}"; url.Append(string.Format(handler, ClientDependencySettings.Instance.CompositeFileHandlerPath, http.Server.UrlEncode(fileKey), type)); url.Append("&cdv="); url.Append(version.ToString()); break; default: //Create a URL based on base64 paths instead of a query string //this used to be a "." but this causes problems with mvc and ignore routes for //some very strange reason, so we'll just use normal paths. var versionDelimiter = "."; url.Append(ClientDependencySettings.Instance.CompositeFileHandlerPath); int pos = 0; while (fileKey.Length > pos) { url.Append("/"); int len = Math.Min(fileKey.Length - pos, 240); url.Append(fileKey.Substring(pos, len)); pos += 240; } url.Append(versionDelimiter); url.Append(version.ToString()); switch (type) { case ClientDependencyType.Css: url.Append(versionDelimiter); url.Append("css"); break; case ClientDependencyType.Javascript: url.Append(versionDelimiter); url.Append("js"); break; } break; } return(url.ToString()); }
/// <summary> /// Returns the url for the composite file handler for the filePath specified. /// </summary> /// <param name="fileKey">The Base64 encoded file paths or the file map key used to lookup the required dependencies</param> /// <param name="type"></param> /// <param name="http"></param> /// <param name="urlType"></param> /// <param name="compositeFileHandlerPath"> </param> /// <param name="version"> </param> /// <returns></returns> public virtual string GetCompositeFileUrl( string fileKey, ClientDependencyType type, HttpContextBase http, CompositeUrlType urlType, string compositeFileHandlerPath, int version) { var url = new StringBuilder(); switch (urlType) { case CompositeUrlType.Base64QueryStrings: //Create a URL with a base64 query string const string handler = "{0}?s={1}&t={2}"; url.Append(string.Format(handler, compositeFileHandlerPath, http.Server.UrlEncode(fileKey), type)); url.Append("&cdv="); url.Append(version.ToString()); break; default: //Create a URL based on base64 paths instead of a query string url.Append(compositeFileHandlerPath); url.Append('/'); //create the path based on the path format... var pathUrl = PathBasedUrlFormatter.CreatePath(PathBasedUrlFormat, fileKey, type, version); //append the path formatted url.Append(pathUrl); break; } return(url.ToString()); }
/// <summary> /// Returns the url for the composite file handler for the filePath specified. /// </summary> /// <param name="fileKey">The Base64 encoded file paths or the file map key used to lookup the required dependencies</param> /// <param name="type"></param> /// <param name="http"></param> /// <param name="urlType"></param> /// <returns></returns> public virtual string GetCompositeFileUrl( string fileKey, ClientDependencyType type, HttpContextBase http, CompositeUrlType urlType) { var url = new StringBuilder(); int version = GetVersion(); switch (urlType) { case CompositeUrlType.Base64QueryStrings: //Create a URL with a base64 query string const string handler = "{0}?s={1}&t={2}"; url.Append(string.Format(handler, ClientDependencySettings.Instance.CompositeFileHandlerPath, http.Server.UrlEncode(fileKey), type)); url.Append("&cdv="); url.Append(version.ToString()); break; default: //Create a URL based on base64 paths instead of a query string //this used to be a "." but this causes problems with mvc and ignore routes for //some very strange reason, so we'll just use normal paths. var versionDelimiter = "."; url.Append(ClientDependencySettings.Instance.CompositeFileHandlerPath); int pos = 0; while (fileKey.Length > pos) { url.Append("/"); int len = Math.Min(fileKey.Length - pos, 240); url.Append(fileKey.Substring(pos, len)); pos += 240; } url.Append(versionDelimiter); url.Append(version.ToString()); switch (type) { case ClientDependencyType.Css: url.Append(versionDelimiter); url.Append("css"); break; case ClientDependencyType.Javascript: url.Append(versionDelimiter); url.Append("js"); break; } break; } return url.ToString(); }
public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config) { base.Initialize(name, config); if (config == null) return; if (config["enableCssMinify"] != null) { bool enableCssMinify = true; if (bool.TryParse(config["enableCssMinify"], out enableCssMinify)) EnableCssMinify = enableCssMinify; } if (config["enableJsMinify"] != null) { bool enableJsMinify = true; if (bool.TryParse(config["enableJsMinify"], out enableJsMinify)) EnableJsMinify = enableJsMinify; } if (config["persistFiles"] != null) { bool persistFiles; if (bool.TryParse(config["persistFiles"], out persistFiles)) PersistCompositeFiles = persistFiles; } if (config["urlType"] != null) { try { UrlType = (CompositeUrlType)Enum.Parse(typeof(CompositeUrlType), config["urlType"]); } catch (ArgumentException) { //swallow exception, we've set the default } } if (config["pathUrlFormat"] != null) { PathBasedUrlFormat = config["pathUrlFormat"]; PathBasedUrlFormatter.Validate(PathBasedUrlFormat); } CompositeFilePathAsString = config["compositeFilePath"] ?? DefaultDependencyPath; string bundleDomains = config["bundleDomains"]; if (bundleDomains != null) bundleDomains = bundleDomains.Trim(); if (string.IsNullOrEmpty(bundleDomains)) { BundleDomains = new List<string>(); } else { string[] domains = bundleDomains.Split(new char[] { ',' }); for (int i = 0; i < domains.Length; i++) { // make sure we have a starting dot and a trailing port // ie 'maps.google.com' will be stored as '.maps.google.com:80' if (domains[i].IndexOf(':') < 0) domains[i] = domains[i] + ":80"; if (!domains[i].StartsWith(".")) domains[i] = "." + domains[i]; } BundleDomains = new List<string>(domains); } }
/// <summary> /// Returns the url for the composite file handler for the filePath specified. /// </summary> /// <param name="fileKey">The Base64 encoded file paths or the file map key used to lookup the required dependencies</param> /// <param name="type"></param> /// <param name="http"></param> /// <param name="urlType"></param> /// <param name="compositeFileHandlerPath"> </param> /// <param name="version"> </param> /// <returns></returns> public virtual string GetCompositeFileUrl( string fileKey, ClientDependencyType type, HttpContextBase http, CompositeUrlType urlType, string compositeFileHandlerPath, int version) { var url = new StringBuilder(); switch (urlType) { case CompositeUrlType.Base64QueryStrings: //Create a URL with a base64 query string const string handler = "{0}?s={1}&t={2}"; url.Append(string.Format(handler, compositeFileHandlerPath, http.Server.UrlEncode(fileKey), type)); url.Append("&cdv="); url.Append(version.ToString()); break; default: //Create a URL based on base64 paths instead of a query string url.Append(compositeFileHandlerPath); url.Append('/'); //create the path based on the path format... var pathUrl = PathBasedUrlFormatter.CreatePath(PathBasedUrlFormat, fileKey, type, version); //append the path formatted url.Append(pathUrl); break; } return url.ToString(); }