private static MvcHtmlString RegisterResources(this HtmlHelper helper, SimpleCompressionConfiguration configuration, string[] files, ResourceType resourceType) { configuration = configuration ?? SimpleCompressionConfiguration.DefaulConfiguration; Func<string, string> printFunc = resourceType == ResourceType.Css ? (Func<string,string>)TagHelper.PrintCssTag : TagHelper.PrintJavascriptTag; string tagString = string.Empty; if (configuration.Disable) { foreach (var file in files) { tagString += helper.PrintTag(file, printFunc); } } else { var fileResources = CreateResources(files, configuration); var hashCode = fileResources.GetHashCode(); string extension = resourceType == ResourceType.Css ? ".css" : ".js"; string fileName = configuration.ClientVersionPrefix + "_" + hashCode + extension; string filePath = "~/" + configuration.FolderForCachedResources + fileName; ResourceCacheManager.Instance.AddResourcesToCache(fileName, new Tuple<List<FileResource>, SimpleCompressionConfiguration>(fileResources, configuration)); tagString = helper.PrintTag(filePath, printFunc); } return new MvcHtmlString(tagString); }
private static FileResourceCollection CreateResources(string[] files, SimpleCompressionConfiguration configuration) { var resources = new FileResourceCollection(); foreach (var file in files) { var resource = new FileResource(file); resources.Add(resource); } return resources; }
private List<string> AddResponseToBuffer(HttpContext context, StringBuilder sb, SimpleCompressionConfiguration configuration, ResourceType resourceType, List<FileResource> files) { var addedFiles = new List<string>(); foreach (FileResource fileResource in files) { string file = fileResource.FilePath; file = context.Server.MapPath(file); addedFiles.Add(file); using (StreamReader input = new StreamReader(file)) { sb.Append(input.ReadToEnd()); } } return addedFiles; }
private string CompressResponse(StringBuilder sb, SimpleCompressionConfiguration configuration, ResourceType resourceType) { if (configuration.Compress) { ICompress compressor = configuration.Compressor; Func<string, string> compressFunction = resourceType == ResourceType.Css ? (Func<string, string>) compressor.CompressCssString : compressor.CompressJavascriptString; return compressFunction(sb.ToString()); } else { return sb.ToString(); } }
public static MvcHtmlString RegisterScripts(this HtmlHelper helper, SimpleCompressionConfiguration configuration, params string[] files) { return helper.RegisterResources(configuration, files, ResourceType.Javascript); }