Пример #1
0
 /// <summary>
 /// Create a new instance of ImageBuilder using the specified extensions, encoder provider, file provider, and settings filter. Extension methods will be fired in the order they exist in the collection.
 /// </summary>
 /// <param name="extensions"></param>
 /// <param name="encoderProvider"></param>
 /// <param name="settingsModifier"></param>
 /// <param name="virtualFileProvider"></param>
 public ImageBuilder(IEnumerable<BuilderExtension> extensions, IEncoderProvider encoderProvider, IVirtualImageProvider virtualFileProvider, ISettingsModifier settingsModifier)
     : base(extensions)
 {
     this._encoderProvider = encoderProvider;
     this._virtualFileProvider = virtualFileProvider;
     this._settingsModifier = settingsModifier;
 }
Пример #2
0
 public static MemCachedFile GetCachedVirtualFile(string path, IVirtualImageProvider provider, NameValueCollection queryString)
 {
     string key = provider != null ? getVirtualCacheKey(path,queryString) : getCacheKey(path);
     MemCachedFile file = null;
     if (HttpContext.Current != null)
     {
         if (HttpContext.Current.Cache[key] != null)
         {
             file = (MemCachedFile)HttpContext.Current.Cache[key];
         }
         else
         {
             IVirtualFile vfile = provider != null ? provider.GetFile(path, queryString) : null;
             if (vfile == null) throw new FileNotFoundException("The specified virtual file could not be found: \"" + path + "\" Associated querystring: \"" + PathUtils.BuildQueryString(queryString) + "\".");
             file = vfile != null ? new MemCachedFile(vfile) : new MemCachedFile(path);
             if (provider == null)
                 HttpContext.Current.Cache.Insert(key, file, new CacheDependency(path));
             else
                 HttpContext.Current.Cache.Insert(key, file);
         }
     }
     else
     {
         //Has no invalidation, but this is only used for benchmarks. Only runs when there is no http session.
         lock(_fallbackCache){
             if (_fallbackCache.ContainsKey(key)) file = _fallbackCache[key];
             else
             {
                 file = provider != null ? new MemCachedFile(provider.GetFile(path, queryString)) : new MemCachedFile(path);
                 _fallbackCache[key] = file;
             }
         }
     }
     return file;
 }
Пример #3
0
        public void SettingsConstructor()
        {
            // Arrange

            // Act
            IVirtualImageProvider target = this.CreateSqlReaderPlugin();

            // Assert
            Assert.NotNull(target);
            Assert.IsType <SqlReaderPlugin>(target);
        }
Пример #4
0
        public void GetFileWithEmptyVirtualPath()
        {
            // Arrange
            IVirtualImageProvider target = this.CreateSqlReaderPlugin();

            // Act
            var actual = target.GetFile(string.Empty, null);

            // Assert
            Assert.Null(actual);
        }
Пример #5
0
        public void GetFileWithNullVirtualPath()
        {
            // Arrange
            IVirtualImageProvider target = this.CreateSqlReaderPlugin();

            // Act
            var actual = Assert.Throws <NullReferenceException>(() => target.GetFile(null, null));

            // Assert
            Assert.NotNull(actual);
            Assert.IsType <NullReferenceException>(actual);
        }
Пример #6
0
        public void GetFileWithoutVirtualPathPrefix()
        {
            // Arrange
            string virtualPath           = dummyDatabaseRecordId.ToString("B");
            IVirtualImageProvider target = this.CreateSqlReaderPlugin();

            // Act
            var actual = target.GetFile(virtualPath, null);

            // Assert
            Assert.Null(actual);
        }
Пример #7
0
        public void FileExistsWithEmptyVirtualPath()
        {
            // Arrange
            bool expected = false;
            IVirtualImageProvider target = this.CreateSqlReaderPlugin();

            // Act
            var actual = target.FileExists(string.Empty, null);

            // Assert
            Assert.Equal <bool>(expected, actual);
        }
Пример #8
0
        public void FileExistsWithNullQueryString()
        {
            // Arrange
            bool   expected              = true;
            string virtualPath           = Path.Combine(pathPrefix, dummyDatabaseRecordId.ToString("B"));
            IVirtualImageProvider target = RemoteReaderPlugin.Current;

            // Act
            bool actual = target.FileExists(virtualPath, null);

            // Assert
            Assert.Equal <bool>(expected, actual);
        }
Пример #9
0
        public void GetFileInvalidWithoutCheckForModifiedFiles()
        {
            // Arrange
            IVirtualImageProvider target = this.CreateSqlReaderPlugin();
            var    settings    = (SqlReaderPlugin)target;
            string virtualPath = Path.Combine(settings.VirtualFilesystemPrefix, dummyDatabaseRecordId.ToString("B"));

            // Act
            var actual = target.GetFile(virtualPath, null);

            // Assert
            Assert.NotNull(actual);
            Assert.IsAssignableFrom <Blob>(actual);
        }
Пример #10
0
        public void FileExistsWithoutVirtualPath()
        {
            // Arrange
            bool expected = false;
            IVirtualImageProvider target = this.CreateSqlReaderPlugin();
            var    settings    = (SqlReaderPlugin)target;
            string virtualPath = dummyDatabaseRecordId.ToString("B");

            // Act
            bool actual = target.FileExists(virtualPath, null);

            // Assert
            Assert.Equal <bool>(expected, actual);
        }
Пример #11
0
        public void FileExistsWithNullVirtualPath()
        {
            // Arrange
            var rs = new ResizerSection(ConfigXml);
            var c  = new Config(rs);
            IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.Get <AzureReader2Plugin>();

            // Act
            var actual = Assert.Throws <NullReferenceException>(() => target.FileExists(null, null));

            // Assert
            Assert.NotNull(actual);
            Assert.IsType <NullReferenceException>(actual);
        }
Пример #12
0
        public void FileExistsWithEmptyVirtualPath()
        {
            // Arrange
            bool expected = false;
            var  rs       = new ResizerSection(ConfigXml);
            var  c        = new Config(rs);
            IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.Get <AzureReader2Plugin>();

            // Act
            var actual = target.FileExists(string.Empty, null);

            // Assert
            Assert.Equal <bool>(expected, actual);
        }
Пример #13
0
        public void FileExistsWithNullQueryString()
        {
            // Arrange
            bool expected = true;
            IVirtualImageProvider target = this.CreateSqlReaderPlugin();
            var    settings    = (SqlReaderPlugin)target;
            string virtualPath = Path.Combine(settings.VirtualFilesystemPrefix, dummyDatabaseRecordId.ToString("B"));

            // Act
            bool actual = target.FileExists(virtualPath, null);

            // Assert
            Assert.Equal <bool>(expected, actual);
        }
Пример #14
0
        public void GetFileWithEmptyVirtualPath()
        {
            // Arrange
            var rs = new ResizerSection(ConfigXml);
            var c  = new Config(rs);
            IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.Get <AzureReader2Plugin>();
            string virtualPath           = Path.Combine(PathPrefix, Filename);

            // Act
            var actual = target.GetFile(string.Empty, null);

            // Assert
            Assert.Null(actual);
        }
Пример #15
0
        public void GetFileWithoutVirtualPathPrefix()
        {
            // Arrange
            var rs = new ResizerSection(Settings);
            var c  = new Config(rs);
            IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.VirtualProviderPlugins.First;
            string virtualPath           = Filename;

            // Act
            var actual = target.GetFile(virtualPath, null);

            // Assert
            Assert.Null(actual);
        }
Пример #16
0
        public void GetFileValidFastMode()
        {
            // Arrange
            var rs = new ResizerSection(Settings);
            var c  = new Config(rs);
            IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.VirtualProviderPlugins.First;
            string virtualPath           = Path.Combine(PathPrefix, Filename);

            // Act
            var actual = target.GetFile(virtualPath, null);

            // Assert
            Assert.NotNull(actual);
            Assert.IsAssignableFrom <Blob>(actual);
        }
Пример #17
0
        public void FileExistsWithoutVirtualPath()
        {
            // Arrange
            bool expected = false;
            var  rs       = new ResizerSection(Settings);
            var  c        = new Config(rs);
            IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.VirtualProviderPlugins.First;
            string virtualPath           = Filename;

            // Act
            bool actual = target.FileExists(virtualPath, null);

            // Assert
            Assert.Equal <bool>(expected, actual);
        }
Пример #18
0
        public void FileExistsWithNullQueryString()
        {
            // Arrange
            bool expected = true;
            var  rs       = new ResizerSection(ConfigXml);
            var  c        = new Config(rs);
            IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.Get <AzureReader2Plugin>();
            string virtualPath           = Path.Combine(PathPrefix, Filename);

            // Act
            bool actual = target.FileExists(virtualPath, null);

            // Assert
            Assert.Equal <bool>(expected, actual);
        }
Пример #19
0
        public void GetFileWithNullVirtualPath()
        {
            // Arrange
            var rs = new ResizerSection(ConfigXml);
            var c  = new Config(rs);
            IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.Get <AzureReader2Plugin>();
            string virtualPath           = Path.Combine(PathPrefix, Filename);

            // Act
            var actual = Assert.Throws <NullReferenceException>(() => target.GetFile(null, null));

            // Assert
            Assert.NotNull(actual);
            Assert.IsType <NullReferenceException>(actual);
        }
Пример #20
0
        public static MemCachedFile GetCachedVirtualFile(string path, IVirtualImageProvider provider, NameValueCollection queryString)
        {
            string key = provider != null?getVirtualCacheKey(path, queryString) : getCacheKey(path);

            MemCachedFile file = null;

            if (HttpContext.Current != null)
            {
                if (HttpContext.Current.Cache[key] != null)
                {
                    file = (MemCachedFile)HttpContext.Current.Cache[key];
                }
                else
                {
                    IVirtualFile vfile = provider != null?provider.GetFile(path, queryString) : null;

                    if (vfile == null)
                    {
                        throw new FileNotFoundException("The specified virtual file could not be found: \"" + path + "\" Associated querystring: \"" + PathUtils.BuildQueryString(queryString) + "\".");
                    }
                    file = vfile != null ? new MemCachedFile(vfile) : new MemCachedFile(path);
                    if (provider == null)
                    {
                        HttpContext.Current.Cache.Insert(key, file, new CacheDependency(path));
                    }
                    else
                    {
                        HttpContext.Current.Cache.Insert(key, file);
                    }
                }
            }
            else
            {
                //Has no invalidation, but this is only used for benchmarks. Only runs when there is no http session.
                lock (_fallbackCache){
                    if (_fallbackCache.ContainsKey(key))
                    {
                        file = _fallbackCache[key];
                    }
                    else
                    {
                        file = provider != null ? new MemCachedFile(provider.GetFile(path, queryString)) : new MemCachedFile(path);
                        _fallbackCache[key] = file;
                    }
                }
            }
            return(file);
        }
Пример #21
0
        public void OpenValidId()
        {
            // Arrange
            var rs = new ResizerSection(ConfigXml);
            var c  = new Config(rs);
            IVirtualImageProvider reader = (IVirtualImageProvider)c.Plugins.Get <AzureReader2Plugin>();
            string virtualPath           = Path.Combine(PathPrefix, Filename);
            var    target = reader.GetFile(virtualPath, null);

            // Act
            var actual = target.Open();

            // Assert
            Assert.NotNull(actual);
            Assert.IsAssignableFrom <Stream>(actual);
        }
Пример #22
0
        public void OpenInvalidId()
        {
            // Arrange
            var rs = new ResizerSection(Settings);
            var c  = new Config(rs);
            IVirtualImageProvider reader = (IVirtualImageProvider)c.Plugins.VirtualProviderPlugins.First;
            string virtualPath           = Path.Combine(PathPrefix, "resizer-downloads/examples/fountain-xxxx.jpg");
            var    target = reader.GetFile(virtualPath, null);

            // Act
            var actual = Assert.Throws <FileNotFoundException>(() => target.Open());

            // Assert
            Assert.NotNull(actual);
            Assert.IsType <FileNotFoundException>(actual);
        }
Пример #23
0
        public void FileExistsWithIntegerImageIdType()
        {
            // Arrange
            bool expected = true;
            IVirtualImageProvider target = this.CreateSqlReaderPlugin();
            var settings = (SqlReaderPlugin)target;

            settings.ImageIdType = System.Data.SqlDbType.Int;
            string virtualPath = Path.Combine(settings.VirtualFilesystemPrefix, "22");

            // Act
            bool actual = target.FileExists(virtualPath, null);

            // Assert
            Assert.Equal <bool>(expected, actual);
        }
Пример #24
0
        public void OpenInvalidId()
        {
            // Arrange
            IVirtualImageProvider reader = this.CreateSqlReaderPlugin();
            var    settings    = (SqlReaderPlugin)reader;
            string virtualPath = Path.Combine(settings.VirtualFilesystemPrefix, dummyDatabaseRecordId.ToString("B"));
            var    target      = reader.GetFile(virtualPath, null);

            // Act
            var actual = Assert.Throws <FileNotFoundException>(() => target.Open());

            // Assert
            Assert.NotNull(actual);
            Assert.IsType <FileNotFoundException>(actual);
            Assert.Equal <string>(virtualPath, target.VirtualPath);
        }
Пример #25
0
        public void OpenValidId()
        {
            // Arrange
            Guid id = this.realDatabaseRecordId; ////this.CreateFileInDatabase();
            IVirtualImageProvider reader = this.CreateSqlReaderPlugin();
            var    settings    = (SqlReaderPlugin)reader;
            string virtualPath = Path.Combine(settings.VirtualFilesystemPrefix, id.ToString("B"));
            var    target      = reader.GetFile(virtualPath, null);

            // Act
            var actual = target.Open();

            // Assert
            Assert.NotNull(actual);
            Assert.IsAssignableFrom <Stream>(actual);
        }
Пример #26
0
        public void GetFileInvalidNotFastMode()
        {
            // Arrange
            var rs = new ResizerSection(ConfigXml);
            var c  = new Config(rs);
            IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.Get <AzureReader2Plugin>();

            ((AzureReader2Plugin)target).LazyExistenceCheck = false;
            ((AzureReader2Plugin)target).MetadataCache      = model;
            string virtualPath = Path.Combine(PathPrefix, "fountain-xxxx.jpg");

            // Act
            var actual = target.GetFile(virtualPath, null);

            // Assert
            Assert.Null(actual);
        }
Пример #27
0
        public void FileExistsWithInvalidGuidId()
        {
            // Arrange
            IVirtualImageProvider target = this.CreateSqlReaderPlugin();
            var settings = (SqlReaderPlugin)target;

            settings.LazyExistenceCheck = false;
            settings.MetadataCache      = model;
            string virtualPath = Path.Combine(settings.VirtualFilesystemPrefix, dummyDatabaseRecordId.ToString("B").Substring(0, 5));

            // Act
            var actual = Assert.Throws <ArgumentNullException>(() => target.FileExists(virtualPath, null));

            // Assert
            Assert.NotNull(actual);
            Assert.IsType <ArgumentNullException>(actual);
        }
Пример #28
0
        public void FileExistCheckForModifiedFilesFileNotExisting()
        {
            // Arrange
            bool expected = false;
            IVirtualImageProvider target = this.CreateSqlReaderPlugin();
            var settings = (SqlReaderPlugin)target;

            settings.LazyExistenceCheck = false;
            settings.MetadataCache      = model;
            string virtualPath = Path.Combine(settings.VirtualFilesystemPrefix, dummyDatabaseRecordId.ToString("B"));

            // Act
            bool actual = target.FileExists(virtualPath, null);

            // Assert
            Assert.Equal <bool>(expected, actual);
        }
Пример #29
0
        public void FileExistsCheckForModifiedFilesFileExisting()
        {
            // Arrange
            Guid id       = this.realDatabaseRecordId; ////this.CreateFileInDatabase();
            bool expected = true;
            IVirtualImageProvider target = this.CreateSqlReaderPlugin();
            var settings = (SqlReaderPlugin)target;

            settings.CheckForModifiedFiles = true;
            string virtualPath = Path.Combine(settings.VirtualFilesystemPrefix, id.ToString("B"));

            // Act
            bool actual = target.FileExists(virtualPath, null);

            // Assert
            Assert.Equal <bool>(expected, actual);
        }
Пример #30
0
        public void GetFileInvalidNotFastMode()
        {
            // Arrange
            var rs = new ResizerSection(Settings);
            var c  = new Config(rs);
            IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.VirtualProviderPlugins.First;

            ((S3Reader2)target).LazyExistenceCheck = false;
            ((S3Reader2)target).MetadataCache      = model;
            string virtualPath = Path.Combine(PathPrefix, "resizer-downloads/examples/fountain-xxxx.jpg");

            // Act
            var actual = target.GetFile(virtualPath, null);

            // Assert
            Assert.Null(actual);
        }
Пример #31
0
        public void OpenInvalidContainer()
        {
            // Arrange
            var rs = new ResizerSection(ConfigXml);
            var c  = new Config(rs);
            IVirtualImageProvider reader = (IVirtualImageProvider)c.Plugins.Get <AzureReader2Plugin>();

            ((AzureReader2Plugin)reader).LazyExistenceCheck = true;
            string virtualPath = Path.Combine(PathPrefix.Substring(0, PathPrefix.Length - 2) + "/", "fountain-xxxx.jpg");
            var    target      = reader.GetFile(virtualPath, null);

            // Act
            var actual = Assert.Throws <FileNotFoundException>(() => target.Open());

            // Assert
            Assert.NotNull(actual);
            Assert.IsType <FileNotFoundException>(actual);
        }
Пример #32
0
        public void GetFileValidNotFastModeStorageException()
        {
            // Arrange
            var rs = new ResizerSection("<resizer><plugins><add name=\"AzureReader2\" prefix=\"/azure/\" connectionString=\"DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==\" endpoint=\"http://127.0.0.1:10000/devstoreaccount1/\" /></plugins></resizer>");
            var c  = new Config(rs);
            IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.Get <AzureReader2Plugin>();

            ((AzureReader2Plugin)target).LazyExistenceCheck = false;
            ((AzureReader2Plugin)target).MetadataCache      = model;
            string virtualPath = Path.Combine(PathPrefix, Filename);

            // Act
            var actual = Assert.Throws <StorageException>(() => target.GetFile(virtualPath, null));

            // Assert
            Assert.NotNull(actual);
            Assert.IsType <StorageException>(actual);
        }
Пример #33
0
 /// <summary>
 /// Creates another instance of the class using the specified extensions. Subclasses should override this and point to their own constructor.
 /// </summary>
 /// <param name="extensions"></param>
 /// <param name="writer"></param>
 /// <param name="virtualFileProvider"></param>
 /// <param name="settingsModifier"></param>
 /// <returns></returns>
 public virtual ImageBuilder Create(IEnumerable<BuilderExtension> extensions, IEncoderProvider writer, IVirtualImageProvider virtualFileProvider, ISettingsModifier settingsModifier)
 {
     return new ImageBuilder(extensions,writer,virtualFileProvider,settingsModifier);
 }