/// <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; }
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; }
public void SettingsConstructor() { // Arrange // Act IVirtualImageProvider target = this.CreateSqlReaderPlugin(); // Assert Assert.NotNull(target); Assert.IsType <SqlReaderPlugin>(target); }
public void GetFileWithEmptyVirtualPath() { // Arrange IVirtualImageProvider target = this.CreateSqlReaderPlugin(); // Act var actual = target.GetFile(string.Empty, null); // Assert Assert.Null(actual); }
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); }
public void GetFileWithoutVirtualPathPrefix() { // Arrange string virtualPath = dummyDatabaseRecordId.ToString("B"); IVirtualImageProvider target = this.CreateSqlReaderPlugin(); // Act var actual = target.GetFile(virtualPath, null); // Assert Assert.Null(actual); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
/// <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); }