/// <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);
        }
Exemple #5
0
        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));
        }