/// <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);
        }
Ejemplo n.º 2
0
 /// <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)
     });
 }
Ejemplo n.º 3
0
 /// <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,
     });
 }