public CSSAssetsFileHasher(string hashQueryStringKeyName, IResolver fileResolver, IHasher hasher, IPathTranslator pathTranslator) { HashQueryStringKeyName = hashQueryStringKeyName; FileSystemResolver = fileResolver; Hasher = hasher; this.pathTranslator = pathTranslator; }
public CatalogItemPath ConvertToCatalogPath(IPathTranslator pathTrans) { if (pathTrans == null) { return(new CatalogItemPath(NativeCatalogPath, base.EditSessionID)); } return(new CatalogItemPath(pathTrans.ExternalToCatalog(base.Value), base.EditSessionID)); }
public static string RewriteCssPaths(string outputPath, string sourcePath, string css, ICSSAssetsFileHasher cssAssetsFileHasher, IPathTranslator pathTranslator, bool asImport = false) { var relativePaths = FindDistinctRelativePathsIn(css); if (relativePaths.Any()) { var relativeOutputPath = GetWebPath(outputPath, pathTranslator); var relativeSourcePath = GetWebPath(sourcePath, pathTranslator); var relativePathAdapter = RelativePathAdapter.Between(relativeOutputPath, relativeSourcePath); foreach (var relativePath in relativePaths) { var firstIndexOfHashOrQuestionMark = relativePath.IndexOfAny(new[] {'?', '#'}); var segmentAfterHashOrQuestionMark = firstIndexOfHashOrQuestionMark >= 0 ? relativePath.Substring(firstIndexOfHashOrQuestionMark) : string.Empty; var capturedRelativePath = segmentAfterHashOrQuestionMark != string.Empty ? relativePath.Substring(0, firstIndexOfHashOrQuestionMark) : relativePath; var resolvedOutput = relativePathAdapter.Adapt(capturedRelativePath); var newRelativePath = (asImport ? "squishit://" : "") + (resolvedOutput + segmentAfterHashOrQuestionMark); css = ReplaceRelativePathsIn(css, relativePath, newRelativePath); } } //moved out of if block above so that root-relative paths can be hashed as well if(cssAssetsFileHasher != null) { var hashableAssetPaths = FindHashableAssetPaths(css); foreach(var hashableAssetPath in hashableAssetPaths) { var assetPathWithHash = cssAssetsFileHasher.AppendFileHash(outputPath, hashableAssetPath); if(hashableAssetPath != assetPathWithHash) { css = ReplaceRelativePathsIn(css, hashableAssetPath, assetPathWithHash); } } } if(!asImport) { css = css.Replace("squishit://", ""); } return css; }
StringBuilder IPathManager.ConstructUrlBuilder(IPathTranslator pathTranslator, string serverVirtualFolderUrl, string itemPath, bool alreadyEscaped, bool addItemPathAsQuery, bool forceAddItemPathAsQuery) { if (!alreadyEscaped) { serverVirtualFolderUrl = ((!string.IsNullOrEmpty(serverVirtualFolderUrl)) ? new Uri(serverVirtualFolderUrl).AbsoluteUri : "http://reportserver"); } string value = UrlUtil.UrlEncode(itemPath); StringBuilder stringBuilder = new StringBuilder(serverVirtualFolderUrl); if (addItemPathAsQuery) { stringBuilder.Append("?"); } stringBuilder.Append(value); return(stringBuilder); }
public static Input FromAsset(Asset asset, IPathTranslator pathTranslator, Func <bool> isDebuggingEnabled) { if (!asset.IsEmbeddedResource) { if (isDebuggingEnabled()) { return(new Input(pathTranslator.ResolveAppRelativePathToFileSystem(asset.LocalPath), asset.IsRecursive, ResolverFactory.Get <FileSystemResolver>())); } if (asset.IsRemoteDownload) { return(new Input(asset.RemotePath, false, ResolverFactory.Get <HttpResolver>())); } //this is weird - do we absolutely need to treat as the remote downloads as local when debugging? return(new Input(pathTranslator.ResolveAppRelativePathToFileSystem(asset.LocalPath), asset.IsRecursive, ResolverFactory.Get <FileSystemResolver>())); } return(asset.IsEmbeddedInRootNamespace ? new Input(asset.RemotePath, false, ResolverFactory.Get <RootEmbeddedResourceResolver>()) : new Input(asset.RemotePath, false, ResolverFactory.Get <StandardEmbeddedResourceResolver>())); }
public static Input FromAsset(Asset asset, IPathTranslator pathTranslator, Func<bool> isDebuggingEnabled) { if (!asset.IsEmbeddedResource) { if (isDebuggingEnabled()) { return new Input(pathTranslator.ResolveAppRelativePathToFileSystem(asset.LocalPath), asset.IsRecursive, ResolverFactory.Get<FileSystemResolver>()); } if (asset.IsRemoteDownload) { return new Input(asset.RemotePath, false, ResolverFactory.Get<HttpResolver>()); } //this is weird - do we absolutely need to treat as the remote downloads as local when debugging? return new Input(pathTranslator.ResolveAppRelativePathToFileSystem(asset.LocalPath), asset.IsRecursive, ResolverFactory.Get<FileSystemResolver>()); } return asset.IsEmbeddedInRootNamespace ? new Input(asset.RemotePath, false, ResolverFactory.Get<RootEmbeddedResourceResolver>()) : new Input(asset.RemotePath, false, ResolverFactory.Get<StandardEmbeddedResourceResolver>()); }
public static string RewriteCssPaths(string outputPath, string sourcePath, string css, ICSSAssetsFileHasher cssAssetsFileHasher, IPathTranslator pathTranslator, bool asImport = false) { var relativePaths = FindDistinctRelativePathsIn(css); if (relativePaths.Any()) { var relativeOutputPath = GetWebPath(outputPath, pathTranslator); var relativeSourcePath = GetWebPath(sourcePath, pathTranslator); var relativePathAdapter = RelativePathAdapter.Between(relativeOutputPath, relativeSourcePath); foreach (var relativePath in relativePaths) { var firstIndexOfHashOrQuestionMark = relativePath.IndexOfAny(new[] { '?', '#' }); var segmentAfterHashOrQuestionMark = firstIndexOfHashOrQuestionMark >= 0 ? relativePath.Substring(firstIndexOfHashOrQuestionMark) : string.Empty; var capturedRelativePath = segmentAfterHashOrQuestionMark != string.Empty ? relativePath.Substring(0, firstIndexOfHashOrQuestionMark) : relativePath; var resolvedOutput = relativePathAdapter.Adapt(capturedRelativePath); var newRelativePath = (asImport ? "squishit://" : "") + (resolvedOutput + segmentAfterHashOrQuestionMark); css = ReplaceRelativePathsIn(css, relativePath, newRelativePath); } } //moved out of if block above so that root-relative paths can be hashed as well if (cssAssetsFileHasher != null) { var hashableAssetPaths = FindHashableAssetPaths(css); foreach (var hashableAssetPath in hashableAssetPaths) { var assetPathWithHash = cssAssetsFileHasher.AppendFileHash(outputPath, hashableAssetPath); if (hashableAssetPath != assetPathWithHash) { css = ReplaceRelativePathsIn(css, hashableAssetPath, assetPathWithHash); } } } if (!asImport) { css = css.Replace("squishit://", ""); } return(css); }
private static string GetWebPath(string outputPath, IPathTranslator pathTranslator) { return "/" + pathTranslator.ResolveFileSystemPathToAppRelative(Path.GetDirectoryName(outputPath)).TrimStart('/') + "/"; }
protected override CatalogItemContextBase <string> CreateContext(IPathTranslator pathTranslator) { return(new PreviewItemContext()); }
protected abstract CatalogItemContextBase <TPathStorageType> CreateContext(IPathTranslator pathTranslator);
public Configuration UsePathTranslator(IPathTranslator translator) { _defaultPathTranslator = translator; return(this); }
/// <summary> /// Construct LESS preprocessor with custom engine construction. /// </summary> /// <param name="engineBuilder">Function for custom ILessEngine construction.</param> /// <param name="pathTranslator">Translator for moving between web and filesystem paths.</param> public LessPreprocessor(Func <ILessEngine> engineBuilder, IPathTranslator pathTranslator) { _engineBuilder = engineBuilder; this.pathTranslator = pathTranslator; }
public CatalogItemUrlBuilder(ICatalogItemContext ctx, bool isFolder) { m_pathTranslator = ctx.PathTranslator; m_pathManager = ctx.PathManager; Construct(ctx.HostRootUri, ctx.HostSpecificItemPath, alreadyEscaped: false, addItemPathAsQuery: true, isFolder); }
private static string GetWebPath(string outputPath, IPathTranslator pathTranslator) { return("/" + pathTranslator.ResolveFileSystemPathToAppRelative(Path.GetDirectoryName(outputPath)).TrimStart('/') + "/"); }
public FilePathMutexProvider(IHasher hasher, IPathTranslator pathTranslator) { this.hasher = hasher; this.pathTranslator = pathTranslator; }
public CatalogItemUrlBuilder(ICatalogItemContext ctx, bool isFolder) { this.m_pathTranslator = ctx.PathTranslator; this.m_pathManager = ctx.PathManager; this.Construct(ctx.HostRootUri, ctx.HostSpecificItemPath, false, true, isFolder); }
/// <summary> /// Construct LESS preprocessor with custom engine construction. /// </summary> /// <param name="engineBuilder">Function for custom ILessEngine construction.</param> /// <param name="pathTranslator">Translator for moving between web and filesystem paths.</param> public LessPreprocessor(Func<ILessEngine> engineBuilder, IPathTranslator pathTranslator) { _engineBuilder = engineBuilder; this.pathTranslator = pathTranslator; }