/// <summary>
 /// The cache key will be based on:
 /// - the version number
 /// - the type (javascript or css)
 /// - whether content is compressed or not
 /// - the hashcode of the file names in this group
 /// - the Internet Explorer version (since there might be additional files for different ie versions)
 /// </summary>
 /// <returns></returns>
 private static string GetCacheKeyForCombinedContent(string manualVersion, string sharedVersion, CombinedResourceType type, int ieVersion, string urlsHash, bool minify, bool rewriteImagesPaths)
 {
     return("CombdResrc" +
            ".mv=" + manualVersion +
            ".sv=" + sharedVersion +
            ".t=" + type +
            ".ie=" + ieVersion +
            ".m=" + minify +
            ".rw=" + rewriteImagesPaths +
            ".hash=" + urlsHash);
 }
 private string BuildQueryStringForCombinedUrl(string pageUrl, string manualVersion, string sharedVersion, CombinedResourceType type, string fileUrls, bool minify, bool rewriteImagePaths)
 {
     return("?" + CombinerConstantsAndSettings.PageUrlKey + "=" + pageUrl +
            "&" + GetVersionQueryString(manualVersion, sharedVersion) +
            "&" + CombinerConstantsAndSettings.TypeUrlKey + "=" + type +
            "&" + CombinerConstantsAndSettings.MinifyUrlKey + "=" + minify +
            "&" + CombinerConstantsAndSettings.RewriteImagePathsUrlKey + "=" + rewriteImagePaths +
            "&" + CombinerConstantsAndSettings.FilesUrlKey + "=" + EncodeTo64(fileUrls));
 }
        private string[] GetCombinedUrls(string pageUrl, IList <string> resUrls, string manualVersion, string sharedVersion, CombinedResourceType resType, string combinedHandlerUrl, bool minify, bool rewriteImagePaths)
        {
            // Partition the urls csv into multiple csv strings if necessary in order to produce urls
            // that are of not greater than 2083 chars to avoid any browser and/or server issues;
            var finalList = new List <string>();
            var list      = new List <string>();
            int charCount = combinedHandlerUrl.Count();

            foreach (string url in resUrls)
            {
                charCount += url.Count();

                if (charCount >= 1300)
                {
                    finalList.Add(string.Join(",", list));
                    list      = new List <string>();
                    charCount = combinedHandlerUrl.Count();
                }
                list.Add(url);
            }

            finalList.Add(string.Join(",", list));

            var result = new List <string>();

            foreach (string urlsCsv in finalList)
            {
                if (resType == CombinedResourceType.javascript)
                {
                    result.Add(combinedHandlerUrl +
                               BuildQueryStringForCombinedUrl(pageUrl, manualVersion, sharedVersion,
                                                              CombinedResourceType.javascript, urlsCsv, minify, rewriteImagePaths));
                }

                if (resType == CombinedResourceType.css)
                {
                    result.Add(combinedHandlerUrl +
                               BuildQueryStringForCombinedUrl(pageUrl, manualVersion, sharedVersion,
                                                              CombinedResourceType.css, urlsCsv, minify, rewriteImagePaths));
                }
            }

            return(result.ToArray());
        }
        private string[] GetCombinedUrls(string pageUrl, IList<string> resUrls, string manualVersion, string sharedVersion, CombinedResourceType resType, string combinedHandlerUrl, bool minify, bool rewriteImagePaths)
        {
            // Partition the urls csv into multiple csv strings if necessary in order to produce urls
            // that are of not greater than 2083 chars to avoid any browser and/or server issues;
            var finalList = new List<string>();
            var list = new List<string>();
            int charCount = combinedHandlerUrl.Count();
            foreach(string url in resUrls)
            {
                charCount += url.Count();

                if(charCount >= 1300)
                {
                    finalList.Add(string.Join(",", list));
                    list = new List<string>();
                    charCount = combinedHandlerUrl.Count();
                }
                list.Add(url);
            }

            finalList.Add(string.Join(",", list));

            var result = new List<string>();

            foreach (string urlsCsv in finalList)
            {
                if (resType == CombinedResourceType.javascript)
                    result.Add( combinedHandlerUrl +
                           BuildQueryStringForCombinedUrl(pageUrl, manualVersion, sharedVersion,
                                                          CombinedResourceType.javascript, urlsCsv, minify, rewriteImagePaths));

                if (resType == CombinedResourceType.css)
                    result.Add( combinedHandlerUrl +
                           BuildQueryStringForCombinedUrl(pageUrl, manualVersion, sharedVersion,
                                                          CombinedResourceType.css, urlsCsv, minify, rewriteImagePaths));
            }

            return result.ToArray();
        }
 private string BuildQueryStringForCombinedUrl(string pageUrl, string manualVersion, string sharedVersion, CombinedResourceType type, string fileUrls, bool minify, bool rewriteImagePaths)
 {
     return "?" + CombinerConstantsAndSettings.PageUrlKey + "=" + pageUrl +
            "&" + GetVersionQueryString(manualVersion, sharedVersion) +
            "&" + CombinerConstantsAndSettings.TypeUrlKey + "=" + type +
            "&" + CombinerConstantsAndSettings.MinifyUrlKey + "=" + minify +
            "&" + CombinerConstantsAndSettings.RewriteImagePathsUrlKey + "=" + rewriteImagePaths +
            "&" + CombinerConstantsAndSettings.FilesUrlKey + "=" + EncodeTo64(fileUrls);
 }
 /// <summary>
 /// The cache key will be based on:
 /// - the version number
 /// - the type (javascript or css)
 /// - whether content is compressed or not
 /// - the hashcode of the file names in this group
 /// - the Internet Explorer version (since there might be additional files for different ie versions)
 /// </summary>
 /// <returns></returns>
 private static string GetCacheKeyForCombinedContent(string manualVersion, string sharedVersion, CombinedResourceType type, int ieVersion, string urlsHash, bool minify, bool rewriteImagesPaths)
 {
     return "CombdResrc" +
             ".mv=" + manualVersion +
             ".sv=" + sharedVersion +
             ".t=" + type +
             ".ie=" + ieVersion +
             ".m=" + minify +
             ".rw=" + rewriteImagesPaths +
             ".hash=" + urlsHash;
 }