コード例 #1
0
ファイル: Config.cs プロジェクト: zhaoyingju/resizer
        public Config(ResizerSection config)
        {
            this.configuration = config;

            //Init plugins module
            plugins = new PluginConfig(this);

            //Whenever the extensions change, the image builder instance has to be replaced.
            plugins.ImageBuilderExtensions.Changed += delegate(SafeList <BuilderExtension> s) {
                InvalidateImageBuilder();
            };

            //Relies on plugins, must init second
            pipeline = new PipelineConfig(this);

            bool isAspNet = System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath != null;

            //Load default plugins
            new ImageResizer.Plugins.Basic.DefaultEncoder().Install(this);
            new ImageResizer.Plugins.Basic.NoCache().Install(this);
            new ImageResizer.Plugins.Basic.ClientCache().Install(this);
            new ImageResizer.Plugins.Basic.Diagnostic().Install(this);
            if (isAspNet)
            {
                new ImageResizer.Plugins.Basic.SizeLimiting().Install(this);
            }

            //Load plugins immediately. Lazy plugin loading causes problems.
            plugins.LoadPlugins();
        }
コード例 #2
0
ファイル: Config.cs プロジェクト: timgaunt/resizer
        public Config(ResizerSection config, bool addAspNetPlugins)
        {
            this.configuration = config;

            //Init plugins module
            plugins = new PluginConfig(this);

            //Whenever the extensions change, the image builder instance has to be replaced.
            plugins.ImageBuilderExtensions.Changed += delegate(SafeList <BuilderExtension> s) {
                InvalidateImageBuilder();
            };

            //Relies on plugins, must init second
            pipeline = new PipelineConfig(this);


            //Load default plugins
            new ImageResizer.Plugins.Basic.DefaultEncoder().Install(this);
            new ImageResizer.Plugins.Basic.NoCache().Install(this);
            new ImageResizer.Plugins.Basic.ClientCache().Install(this);
            new ImageResizer.Plugins.Basic.WebConfigLicenseReader().Install(this);

            if (addAspNetPlugins)
            {
                new ImageResizer.Plugins.Basic.Diagnostic().Install(this); //2017-04-04 - this plugin only sets the HTTP handler; adds no other functionality.
                new ImageResizer.Plugins.Basic.SizeLimiting().Install(this);
                new ImageResizer.Plugins.Basic.MvcRoutingShimPlugin().Install(this);
                new ImageResizer.Plugins.Basic.LicenseDisplay().Install(this);
            }

            //Load plugins immediately. Lazy plugin loading causes problems.
            plugins.LoadPlugins();

            pipeline.FireHeartbeat();
        }
コード例 #3
0
ファイル: TinyCacheTests.cs プロジェクト: timgaunt/resizer
        public void ProcessWithCachedDataTest()
        {
            // Arrange
            int    expected = 1;
            int    actual   = 0;
            var    rs       = new ResizerSection(ConfigXml);
            var    c        = new Config(rs);
            ICache target   = c.Plugins.Get <TinyCachePlugin>();

            ResizeSettings settings = new ResizeSettings();

            settings.Cache = ServerCacheMode.Default;
            ResponseArgs args = new ResponseArgs();

            args.RewrittenQuerystring = settings;
            args.RequestKey           = "test";
            args.ResizeImageToStream  = (Stream ms) =>
            {
                ms.WriteByte(99);
                actual++;
            };
            target.Process(HttpContext.Current, args);

            // Act
            target.Process(HttpContext.Current, args);

            // Assert
            Assert.Equal <int>(expected, actual);
        }
コード例 #4
0
        public void TestBitmapSize(int originalWidth, int originalHeight, int expectedWidth, int expectedHeight, string query)
        {
            ResizerSection config = new ResizerSection();
            Config         c      = new Config(config);

            using (Bitmap b = c.CurrentImageBuilder.Build(GetBitmap(originalWidth, originalHeight), new ResizeSettings(query))) {
                Assert.AreEqual <Size>(new Size(expectedWidth, expectedHeight), b.Size);
            }
        }
コード例 #5
0
ファイル: AzureReaderTest.cs プロジェクト: timgaunt/resizer
        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);
        }
コード例 #6
0
ファイル: AzureReaderTest.cs プロジェクト: timgaunt/resizer
        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);
        }
コード例 #7
0
ファイル: AzureReaderTest.cs プロジェクト: timgaunt/resizer
        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);
        }
コード例 #8
0
ファイル: S3ReaderTest.cs プロジェクト: timgaunt/resizer
        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);
        }
コード例 #9
0
ファイル: TinyCacheTests.cs プロジェクト: timgaunt/resizer
        public void UninstallWithoutInstallingTest()
        {
            // Arrange
            bool expected = true;
            var  rs       = new ResizerSection(ConfigXml);
            var  c        = new Config(rs);
            var  target   = new TinyCachePlugin();

            // Act
            bool actual = target.Uninstall(c);

            // Assert
            Assert.Equal <bool>(expected, actual);
        }
コード例 #10
0
ファイル: TinyCacheTests.cs プロジェクト: timgaunt/resizer
        public void ProcessReadCacheFileTest()
        {
            // Arrange
            int expected = 0;
            int actual   = 0;
            var rs       = new ResizerSection(ConfigXml);
            var c        = new Config(rs);
            var target   = c.Plugins.Get <TinyCachePlugin>();

            ResizeSettings settings = new ResizeSettings();

            settings.Cache = ServerCacheMode.Default;
            ResponseArgs args = new ResponseArgs();

            args.RewrittenQuerystring = settings;

            File.Delete(target.PhysicalCacheFile);
            target.VirtualCacheFile = "folder/ImFlushed.txt";
            if (Directory.Exists(Path.GetDirectoryName(target.PhysicalCacheFile)))
            {
                Directory.Delete(Path.GetDirectoryName(target.PhysicalCacheFile), true);
            }

            for (int i = 0; i < 60; i++)
            {
                args.ResizeImageToStream = (Stream ms) =>
                {
                    ms.WriteByte(99);
                };
                args.RequestKey = string.Format(CultureInfo.InvariantCulture, "test{0}", i);
                target.Process(HttpContext.Current, args);
            }

            target = new TinyCachePlugin();
            target.VirtualCacheFile  = "folder/ImFlushed.txt";
            args.ResizeImageToStream = (Stream ms) =>
            {
                ms.WriteByte(99);
                actual++;
            };

            // Act
            args.RequestKey = "test0";
            target.Process(HttpContext.Current, args);

            // Assert
            Assert.True(File.Exists(target.PhysicalCacheFile));
            Assert.Equal <int>(expected, actual);
        }
コード例 #11
0
ファイル: S3ReaderTest.cs プロジェクト: timgaunt/resizer
        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);
        }
コード例 #12
0
ファイル: S3ReaderTest.cs プロジェクト: timgaunt/resizer
        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);
        }
コード例 #13
0
ファイル: TinyCacheTests.cs プロジェクト: timgaunt/resizer
        public void ReadPhysicalCacheFileWithEmptyVirtualCacheFile()
        {
            // Arrange
            string          expected = string.Empty;
            var             rs       = new ResizerSection(ConfigXml);
            var             c        = new Config(rs);
            TinyCachePlugin target   = c.Plugins.Get <TinyCachePlugin>();

            // Act
            target.VirtualCacheFile = expected;
            var actual = target.PhysicalCacheFile;

            // Assert
            Assert.Null(actual);
        }
コード例 #14
0
ファイル: TinyCacheTests.cs プロジェクト: timgaunt/resizer
        public void ReadAndWriteVirtualCacheFile()
        {
            // Arrange
            string          expected = "/folder/name.txt";
            var             rs       = new ResizerSection(ConfigXml);
            var             c        = new Config(rs);
            TinyCachePlugin target   = c.Plugins.Get <TinyCachePlugin>();

            // Act
            target.VirtualCacheFile = expected;
            var actual = target.VirtualCacheFile;

            // Assert
            Assert.Equal(expected, actual);
        }
コード例 #15
0
ファイル: AzureReaderTest.cs プロジェクト: timgaunt/resizer
        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);
        }
コード例 #16
0
ファイル: AzureReaderTest.cs プロジェクト: timgaunt/resizer
        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);
        }
コード例 #17
0
ファイル: TinyCacheTests.cs プロジェクト: timgaunt/resizer
        public void CanProcessNoWithNullArgs()
        {
            // Arrange
            var    rs     = new ResizerSection(ConfigXml);
            var    c      = new Config(rs);
            ICache target = (ICache)c.Plugins.Get <TinyCachePlugin>();


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

            // Assert
            Assert.NotNull(actual);
            Assert.IsType <ArgumentNullException>(actual);
        }
コード例 #18
0
ファイル: AzureReaderTest.cs プロジェクト: timgaunt/resizer
        public void UninstallWithoutInstallingTest()
        {
            // Arrange
            bool expected = true;
            var  rs       = new ResizerSection(ConfigXml);
            var  c        = new Config(rs);
            var  settings = this.Settings;
            var  target   = new AzureReader2Plugin(settings);

            // Act
            bool actual = target.Uninstall(c);

            // Assert
            Assert.Equal <bool>(expected, actual);
        }
コード例 #19
0
ファイル: TinyCacheTests.cs プロジェクト: timgaunt/resizer
        public void ReadAndWritePhysicalCacheFile()
        {
            // Arrange
            string          expected = "folder/name.txt";
            var             rs       = new ResizerSection(ConfigXml);
            var             c        = new Config(rs);
            TinyCachePlugin target   = c.Plugins.Get <TinyCachePlugin>();

            // Act
            target.VirtualCacheFile = "~/" + expected;
            var actual = target.PhysicalCacheFile;

            // Assert
            Assert.True(actual.EndsWith(expected));
        }
コード例 #20
0
ファイル: AzureReaderTest.cs プロジェクト: timgaunt/resizer
        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);
        }
コード例 #21
0
ファイル: TinyCacheTests.cs プロジェクト: timgaunt/resizer
        public void CanOperateWithEmptyVirtualCacheFile()
        {
            // Arrange
            bool            expected = false;
            var             rs       = new ResizerSection(ConfigXml);
            var             c        = new Config(rs);
            TinyCachePlugin target   = c.Plugins.Get <TinyCachePlugin>();

            target.VirtualCacheFile = string.Empty;

            // Act
            var actual = target.CanOperate;

            // Assert
            Assert.Equal <bool>(expected, actual);
        }
コード例 #22
0
ファイル: S3ReaderTest.cs プロジェクト: timgaunt/resizer
        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
ファイル: AzureReaderTest.cs プロジェクト: timgaunt/resizer
        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);
        }
コード例 #24
0
ファイル: S3ReaderTest.cs プロジェクト: timgaunt/resizer
        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);
        }
コード例 #25
0
ファイル: AzureReaderTest.cs プロジェクト: timgaunt/resizer
        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);
        }
コード例 #26
0
ファイル: AzureReaderTest.cs プロジェクト: timgaunt/resizer
        public void GetFileValidFastMode()
        {
            // Arrange
            var rs = new ResizerSection(ConfigXml);
            var c  = new Config(rs);
            IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.Get <AzureReader2Plugin>();

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

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

            // Assert
            Assert.NotNull(actual);
            Assert.IsAssignableFrom <Blob>(actual);
        }
コード例 #27
0
ファイル: S3ReaderTest.cs プロジェクト: timgaunt/resizer
        public void FileExistNotFastModeFileNotExisting()
        {
            // Arrange
            bool expected = false;
            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
            bool actual = target.FileExists(virtualPath, null);

            // Assert
            Assert.Equal <bool>(expected, actual);
        }
コード例 #28
0
ファイル: AzureReaderTest.cs プロジェクト: timgaunt/resizer
        public void FileExistsFastModeFileExisting()
        {
            // Arrange
            bool expected = true;
            var  rs       = new ResizerSection(ConfigXml);
            var  c        = new Config(rs);
            IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.Get <AzureReader2Plugin>();

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

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

            // Assert
            Assert.Equal <bool>(expected, actual);
        }
コード例 #29
0
ファイル: AzureReaderTest.cs プロジェクト: timgaunt/resizer
        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);
        }
コード例 #30
0
ファイル: TinyCacheTests.cs プロジェクト: timgaunt/resizer
        public void ProcessWithTooMuchCachedDataTest()
        {
            // Arrange
            int actual   = 0;
            var rs       = new ResizerSection(ConfigXml);
            var c        = new Config(rs);
            var target   = c.Plugins.Get <TinyCachePlugin>();
            int expected = 52;

            ResizeSettings settings = new ResizeSettings();

            settings.Cache = ServerCacheMode.Default;
            ResponseArgs args = new ResponseArgs();

            args.RewrittenQuerystring = settings;
            args.RequestKey           = "test";

            File.Delete(target.PhysicalCacheFile);
            target.VirtualCacheFile = "folder/TooMuch.txt";
            if (Directory.Exists(Path.GetDirectoryName(target.PhysicalCacheFile)))
            {
                Directory.Delete(Path.GetDirectoryName(target.PhysicalCacheFile), true);
            }

            byte[] data = new byte[1024 * 1024];

            // Act
            for (int i = 0; i < expected; i++)
            {
                args.ResizeImageToStream = (Stream ms) =>
                {
                    ms.Write(data, 0, data.Length);
                    actual++;
                };
                args.RequestKey = string.Format(CultureInfo.InvariantCulture, "test{0}", i);
                target.Process(HttpContext.Current, args);
            }

            // Assert
            Assert.Equal <int>(expected, actual);
        }
コード例 #31
0
ファイル: ImageBuilderTest.cs プロジェクト: eakova/resizer
 public void TestBitmapSize(int originalWidth, int originalHeight, int expectedWidth, int expectedHeight, string query)
 {
     ResizerSection config = new ResizerSection();
     Config c = new Config(config);
     using (Bitmap b = c.CurrentImageBuilder.Build(GetBitmap(originalWidth,originalHeight), new ResizeSettings(query))) {
         Assert.AreEqual<Size>(new Size(expectedWidth,expectedHeight),b.Size);
     }
 }