/// <summary> /// This will add or update a writer for a specific file extension /// </summary> /// <param name="fileExtension"></param> /// <param name="?"></param> /// <param name="writer"></param> public static void AddWriterForExtension(string fileExtension, IVirtualFileWriter writer) { if (fileExtension == null) { throw new ArgumentNullException("fileExtension"); } if (writer == null) { throw new ArgumentNullException("writer"); } if (!fileExtension.StartsWith(".")) { throw new FormatException("A file extension must begin with a '.'"); } #if !Net35 VirtualExtensionWriters.AddOrUpdate(fileExtension.ToUpper(), s => writer, (s, fileWriter) => writer); #else lock (DictionaryLocker) { VirtualExtensionWriters[fileExtension.ToUpper()] = writer; } #endif }
/// <summary> /// This will add or update a writer for a specific file /// </summary> /// <param name="filePath"></param> /// <param name="writer"></param> public static void AddWriterForFile(string filePath, IVirtualFileWriter writer) { if (filePath == null) { throw new ArgumentNullException("filePath"); } if (writer == null) { throw new ArgumentNullException("writer"); } if (!filePath.StartsWith("/")) { throw new FormatException("A file path must begin with a '/'"); } #if !Net35 VirtualPathWriters.AddOrUpdate(filePath.ToUpper(), s => writer, (s, fileWriter) => writer); #else lock (DictionaryLocker) { VirtualPathWriters[filePath.ToUpper()] = writer; } #endif }
/// <summary> /// This will add or update a writer for a specific file /// </summary> /// <param name="filePath"></param> /// <param name="writer"></param> public static void AddWriterForFile(string filePath, IVirtualFileWriter writer) { if (filePath == null) throw new ArgumentNullException("filePath"); if (writer == null) throw new ArgumentNullException("writer"); if (!filePath.StartsWith("/")) { throw new FormatException("A file path must begin with a '/'"); } VirtualPathWriters.AddOrUpdate(filePath.ToUpper(), s => writer, (s, fileWriter) => writer); }
/// <summary> /// This will add or update a writer for a specific file extension /// </summary> /// <param name="fileExtension"></param> /// <param name="?"></param> /// <param name="writer"></param> public static void AddWriterForExtension(string fileExtension, IVirtualFileWriter writer) { if (fileExtension == null) throw new ArgumentNullException("fileExtension"); if (writer == null) throw new ArgumentNullException("writer"); if (!fileExtension.StartsWith(".")) { throw new FormatException("A file extension must begin with a '.'"); } VirtualExtensionWriters.AddOrUpdate(fileExtension.ToUpper(), s => writer, (s, fileWriter) => writer); }
protected bool CanProcessLocally(HttpContextBase context, string filePath, out IVirtualFileWriter virtualFileWriter) { //First check if there's any virtual file providers that can handle this var writer = FileWriters.GetVirtualWriterForFile(filePath); if (writer == null) { var ext = Path.GetExtension(filePath); writer = FileWriters.GetVirtualWriterForExtension(ext); } if (writer != null) { virtualFileWriter = writer; return(writer.FileProvider.FileExists(filePath)); } //can process if it exists locally virtualFileWriter = null; return(File.Exists(context.Server.MapPath(filePath))); }
/// <summary> /// This will check if there's a file writer for the file extension of the file path and if that file physically exists in the website /// </summary> /// <param name="context"></param> /// <param name="filePath"></param> /// <param name="virtualFileWriter"></param> /// <returns></returns> protected bool CanProcessLocally(HttpContextBase context, string filePath, out IVirtualFileWriter virtualFileWriter) { //First check if there's any virtual file providers that can handle this var writer = FileWriters.GetVirtualWriterForFile(filePath); if (writer == null) { if (!PathHelper.TryGetFileExtension(filePath, out var ext)) { virtualFileWriter = null; return(false); } writer = FileWriters.GetVirtualWriterForExtension(ext); } if (writer != null) { virtualFileWriter = writer; try { return(writer.FileProvider.FileExists(filePath)); } catch (Exception) { return(false); } } //can process if it exists locally virtualFileWriter = null; if (!PathHelper.TryMapPath(filePath, context, out var mappedPath)) { return(false); } return(File.Exists(mappedPath)); }
/// <summary> /// Writes the output of a local file to the stream /// </summary> /// <param name="sw"></param> /// <param name="vf"></param> /// <param name="virtualWriter"></param> /// <param name="type"></param> /// <param name="http"></param> protected virtual CompositeFileDefinition WriteVirtualFileToStream(StreamWriter sw, IVirtualFile vf, IVirtualFileWriter virtualWriter, ClientDependencyType type, HttpContextBase http) { if (virtualWriter == null) { throw new ArgumentNullException("virtualWriter"); } if (vf == null) { return(null); } return(virtualWriter.WriteToStream(this, sw, vf, type, vf.Path, http) ? new CompositeFileDefinition(vf.Path, true) : null); }
/// <summary> /// Writes the output of a local file to the stream /// </summary> /// <param name="sw"></param> /// <param name="vf"></param> /// <param name="virtualWriter"></param> /// <param name="type"></param> /// <param name="http"></param> protected virtual CompositeFileDefinition WriteVirtualFileToStream(StreamWriter sw, IVirtualFile vf, IVirtualFileWriter virtualWriter, ClientDependencyType type, HttpContextBase http) { if (virtualWriter == null) throw new ArgumentNullException("virtualWriter"); if (vf == null) return null; return virtualWriter.WriteToStream(this, sw, vf, type, vf.Path, http) ? new CompositeFileDefinition(vf.Path, true) : null; }
protected bool CanProcessLocally(HttpContextBase context, string filePath, out IVirtualFileWriter virtualFileWriter) { //First check if there's any virtual file providers that can handle this var writer = FileWriters.GetVirtualWriterForFile(filePath); if (writer == null) { var ext = Path.GetExtension(filePath); writer = FileWriters.GetVirtualWriterForExtension(ext); } if (writer != null) { virtualFileWriter = writer; return writer.FileProvider.FileExists(filePath); } //can process if it exists locally virtualFileWriter = null; return File.Exists(context.Server.MapPath(filePath)); }