/// <summary>Hash the file.</summary> /// <param name="contentItem">The content item.</param> /// <returns>The result file after the hash.</returns> internal ContentItem Hash(ContentItem contentItem) { var originRelativePath = contentItem.RelativeContentPath; var hashedFileName = contentItem.GetContentHash(this.context) + Path.GetExtension(originRelativePath); var destinationFilePath = this.GetDestinationFilePath(this.DestinationDirectory, hashedFileName, contentItem.RelativeContentPath); var hashedDestinationFolder = this.context.Configuration.DestinationDirectory ?? this.DestinationDirectory; var relativeHashedPath = destinationFilePath; if (!string.IsNullOrWhiteSpace(hashedDestinationFolder) && Path.IsPathRooted(relativeHashedPath)) { relativeHashedPath = relativeHashedPath.MakeRelativeToDirectory(hashedDestinationFolder); } contentItem = ContentItem.FromContentItem(contentItem, null, relativeHashedPath); // Do not overwrite if exists, since filename is md5 hash, filename changes if content changes. contentItem.WriteToRelativeHashedPath(hashedDestinationFolder); // Append to the log this.AppendToWorkLog(contentItem); // Return it as a result file. return(contentItem); }
/// <summary>Creates a <see cref="CacheVaryByFile"/> from a file.</summary> /// <param name="context">The context.</param> /// <param name="contentItem">The result file.</param> /// <returns>The <see cref="CacheVaryByFile"/>.</returns> public static CacheVaryByFile FromFile(IWebGreaseContext context, ContentItem contentItem) { return(new CacheVaryByFile { Path = contentItem.RelativeContentPath, Hash = contentItem.GetContentHash(context) }); }
/// <summary>The from result file.</summary> /// <param name="context">The context.</param> /// <param name="cacheCategory">The cache category.</param> /// <param name="endResult">The end result.</param> /// <param name="fileCategory">The file category.</param> /// <param name="contentItem">The result file.</param> /// <returns>The <see cref="CacheResult"/>.</returns> public static CacheResult FromContentFile(IWebGreaseContext context, string cacheCategory, bool endResult, string fileCategory, ContentItem contentItem) { return(new CacheResult { EndResult = endResult, FileCategory = fileCategory, CachedFilePath = context.Cache.StoreInCache(cacheCategory, contentItem), ContentHash = contentItem.GetContentHash(context), RelativeContentPath = contentItem.RelativeContentPath, RelativeHashedContentPath = contentItem.RelativeHashedContentPath, }); }