PackageContentItem GetOrLoadContentItem(OminifyOptions options) { isLocked = true; var content = cache.Get(packagePath) as PackageContentItem; if (content == null) { lock (syncLock) { content = CreateContent(options); var cacheItemPolicy = new CacheItemPolicy(); if (options.AutoRefreshOnFileChanges) { cacheItemPolicy.ChangeMonitors.Add(new HostFileChangeMonitor(fileSystemPaths)); } cache.Set(packagePath, content, cacheItemPolicy); } } return(content); }
public static Action <Func <Func <IDictionary <string, object>, Task>, Func <IDictionary <string, object>, Task> > > UseOminifier( this Action <Func <Func <IDictionary <string, object>, Task>, Func <IDictionary <string, object>, Task> > > app, Action <OminifyOptions> withOptions) { var options = new OminifyOptions(); withOptions.Invoke(options); return(app.UseOminifier(options)); }
public static void Initialize(OminifyOptions minifierOptions) { if (options != null) throw new InvalidOperationException("The Ominifier can only be initialized once."); options = minifierOptions; packages = options.Packages.ToDictionary(x => x.PackagePath, x => x); }
public static void Initialize(OminifyOptions minifierOptions) { if (options != null) { throw new InvalidOperationException("The Ominifier can only be initialized once."); } options = minifierOptions; packages = options.Packages.ToDictionary(x => x.PackagePath, x => x); }
PackageContentItem CreateContent(OminifyOptions options) { var topLastModified = DateTime.MinValue; var sb = new StringBuilder(); foreach (var fileSystemPath in fileSystemPaths) { var content = ReadFileContent(fileSystemPath, options.MinifyBundles); sb.AppendLine(content); var lastModified = ReadFileLastModifiedUtc(fileSystemPath); if (topLastModified < lastModified) { topLastModified = lastModified; } } return(new PackageContentItem(sb.ToString(), topLastModified)); }
public static Action <Func <Func <IDictionary <string, object>, Task>, Func <IDictionary <string, object>, Task> > > UseOminifier( this Action <Func <Func <IDictionary <string, object>, Task>, Func <IDictionary <string, object>, Task> > > app, OminifyOptions options) { Ominifier.Initialize(options); app(next => new Ominifier(next).Invoke); return(app); }
public DateTime GetLastModifiedUtc(OminifyOptions options) { var contentItem = GetOrLoadContentItem(options); return contentItem.LastModifiedUtc; }
public string GetContent(OminifyOptions options) { var contentItem = GetOrLoadContentItem(options); return contentItem.Content; }
PackageContentItem GetOrLoadContentItem(OminifyOptions options) { isLocked = true; var content = cache.Get(packagePath) as PackageContentItem; if (content == null) { lock (syncLock) { content = CreateContent(options); var cacheItemPolicy = new CacheItemPolicy(); if (options.AutoRefreshOnFileChanges) { cacheItemPolicy.ChangeMonitors.Add(new HostFileChangeMonitor(fileSystemPaths)); } cache.Set(packagePath, content, cacheItemPolicy); } } return content; }
PackageContentItem CreateContent(OminifyOptions options) { var topLastModified = DateTime.MinValue; var sb = new StringBuilder(); foreach (var fileSystemPath in fileSystemPaths) { var content = ReadFileContent(fileSystemPath, options.MinifyBundles); sb.AppendLine(content); var lastModified = ReadFileLastModifiedUtc(fileSystemPath); if (topLastModified < lastModified) { topLastModified = lastModified; } } return new PackageContentItem(sb.ToString(), topLastModified); }
public DateTime GetLastModifiedUtc(OminifyOptions options) { var contentItem = GetOrLoadContentItem(options); return(contentItem.LastModifiedUtc); }
public string GetContent(OminifyOptions options) { var contentItem = GetOrLoadContentItem(options); return(contentItem.Content); }