public virtual ThumbnailOptionEntity FromModel(ThumbnailOption option, PrimaryKeyResolvingMap pkMap) { if (option == null) { throw new ArgumentNullException(nameof(option)); } pkMap.AddPair(option, this); Id = option.Id; Name = option.Name; FileSuffix = option.FileSuffix; ResizeMethod = option.ResizeMethod.ToString(); Width = option.Width; Height = option.Height; BackgroundColor = option.BackgroundColor; AnchorPosition = option.AnchorPosition.ToString(); JpegQuality = option.JpegQuality.ToString(); CreatedBy = option.CreatedBy; CreatedDate = option.CreatedDate; ModifiedBy = option.ModifiedBy; ModifiedDate = option.ModifiedDate; return(this); }
private ThumbnailOption Create(JObject jObject) { ResizeMethod resultResizeMethod = default(ResizeMethod); var resizeMethod = jObject["method"]; if (resizeMethod != null) { Enum.TryParse(resizeMethod.Value <string>(), out resultResizeMethod); } AnchorPosition resultAnchorPosition = default(AnchorPosition); var anchorPosition = jObject["anchorposition"]; if (anchorPosition != null) { Enum.TryParse(anchorPosition.Value <string>(), out resultAnchorPosition); } var result = new ThumbnailOption() { BackgroundColor = jObject["color"]?.Value <string>(), FileSuffix = jObject["alias"]?.Value <string>(), Width = jObject["width"]?.Value <int>(), Height = jObject["height"]?.Value <int>(), AnchorPosition = resultAnchorPosition, ResizeMethod = resultResizeMethod }; return(result); }
/// <summary> ///Generates a Thumbnail /// </summary> /// <param name="image"></param> /// <param name="option"></param> /// <returns></returns> protected virtual Image GenerateThumbnail(Image image, ThumbnailOption option) { var height = option.Height ?? image.Height; var width = option.Width ?? image.Width; var color = ColorTranslator.FromHtml(option.BackgroundColor); Image thumbnail = null; switch (option.ResizeMethod) { case ResizeMethod.FixedSize: thumbnail = ImageResizer.FixedSize(image, width, height, color); break; case ResizeMethod.FixedWidth: thumbnail = ImageResizer.FixedWidth(image, width, color); break; case ResizeMethod.FixedHeight: thumbnail = ImageResizer.FixedHeight(image, height, color); break; case ResizeMethod.Crop: thumbnail = ImageResizer.Crop(image, width, height, option.AnchorPosition); break; } return(thumbnail); }
public virtual ThumbnailTaskOptionEntity FromModel(ThumbnailOption option, ThumbnailTask task) { var result = new ThumbnailTaskOptionEntity(); result.ThumbnailTaskId = task.Id; result.ThumbnailOptionId = option.Id; return(result); }
public async Task GetNextChangesBatch_TasksWithDifferentWorkPathAndOptions_UseDifferentValues() { // Arrange var blobContents = new List <BlobEntry>() { new BlobInfo() { Name = "Blob1.png", Url = "testPath1/Blob1.png", }, new BlobInfo() { Name = "Blob2.png", Url = "testPath2/Blob2.png", }, }; var changesProvider = GetBlobImagesChangesProvider(blobContents); var thumbnailOption = new ThumbnailOption() { FileSuffix = OptionSuffix }; var task1 = new ThumbnailTask() { Id = Guid.NewGuid().ToString(), LastRun = null, WorkPath = "testPath1", ThumbnailOptions = new List <ThumbnailOption>() { thumbnailOption }, }; var task2 = new ThumbnailTask() { Id = Guid.NewGuid().ToString(), LastRun = null, WorkPath = "testPath2", ThumbnailOptions = new List <ThumbnailOption>() { thumbnailOption }, }; var cancellationToken = new CancellationTokenWrapper(new CancellationToken()); // Act var changes1 = await changesProvider.GetNextChangesBatch(task1, null, 0, 10, cancellationToken); var changes2 = await changesProvider.GetNextChangesBatch(task2, null, 0, 10, cancellationToken); //Assert StorageProviderMock.Verify(x => x.SearchAsync(It.IsAny <string>(), It.IsAny <string>()), Times.Exactly(2)); Assert.Collection(changes1, x => Assert.Equal("Blob1.png", x.Name)); Assert.Collection(changes2, x => Assert.Equal("Blob2.png", x.Name)); }
public async Task GetNextChangesBatch_TasksWithOneWorkPathAndOptions_CacheIsWorking() { // Arrange var blobContents = new List <BlobEntry>() { new BlobInfo() { Name = "Blob1.png", Url = "testPath/Blob1.png", }, }; var changesProvider = GetBlobImagesChangesProvider(blobContents); var thumbnailOption = new ThumbnailOption() { FileSuffix = OptionSuffix }; var workPath = "testPath"; var task1 = new ThumbnailTask() { Id = Guid.NewGuid().ToString(), LastRun = null, WorkPath = workPath, ThumbnailOptions = new List <ThumbnailOption>() { thumbnailOption }, }; var task2 = new ThumbnailTask() { Id = Guid.NewGuid().ToString(), LastRun = null, WorkPath = workPath, ThumbnailOptions = new List <ThumbnailOption>() { thumbnailOption }, }; var cancellationToken = new CancellationTokenWrapper(new CancellationToken()); // Act var changes1 = await changesProvider.GetNextChangesBatch(task1, null, 0, 10, cancellationToken); var changes2 = await changesProvider.GetNextChangesBatch(task2, null, 0, 10, cancellationToken); //Assert StorageProviderMock.Verify(x => x.SearchAsync(It.IsAny <string>(), It.IsAny <string>()), Times.Once); Assert.Single(changes1); Assert.Single(changes2); for (var i = 0; i < changes1.Length; i++) { Assert.Same(changes1[i], changes2[i]); } }
public virtual async Task <GenericSearchResult <ThumbnailOption> > SearchAsync(ThumbnailOptionSearchCriteria criteria) { using (var repository = ThumbnailRepositoryFactory()) { var sortInfos = criteria.SortInfos; if (sortInfos.IsNullOrEmpty()) { sortInfos = new[] { new SortInfo { SortColumn = ReflectionUtility.GetPropertyName <ThumbnailTask>(t => t.CreatedDate), SortDirection = SortDirection.Descending } } } ; var query = repository.ThumbnailOptions.OrderBySortInfos(sortInfos); var totalCount = await query.CountAsync(); var results = new ThumbnailOption[0]; if (criteria.Take > 0) { var ids = await query.Skip(criteria.Skip).Take(criteria.Take).Select(x => x.Id).ToArrayAsync(); var thumbnailOptions = await repository.GetThumbnailOptionsByIdsAsync(ids); results = thumbnailOptions.Select(t => t.ToModel(AbstractTypeFactory <ThumbnailOption> .TryCreateInstance())).ToArray(); } var retVal = new GenericSearchResult <ThumbnailOption> { TotalCount = totalCount, Results = results.AsQueryable().OrderBySortInfos(sortInfos).ToList() }; return(retVal); } } }
public async Task GetNextChangesBatch_TasksWithOneWorkPathAndOptions_CacheIsWorkingWithGetTotalChangesCount() { // Arrange var blobContents = new List <BlobEntry>() { new BlobInfo() { Name = "Blob1.png", Url = "testPath/Blob1.png", }, }; var changesProvider = GetBlobImagesChangesProvider(blobContents); var thumbnailOption = new ThumbnailOption() { FileSuffix = OptionSuffix }; var workPath = "testPath"; var task = new ThumbnailTask() { Id = Guid.NewGuid().ToString(), LastRun = null, WorkPath = workPath, ThumbnailOptions = new List <ThumbnailOption>() { thumbnailOption }, }; var cancellationToken = new CancellationTokenWrapper(new CancellationToken()); // Act var changes = await changesProvider.GetNextChangesBatch(task, null, 0, 10, cancellationToken); var count = await changesProvider.GetTotalChangesCount(task, null, cancellationToken); //Assert StorageProviderMock.Verify(x => x.SearchAsync(It.IsAny <string>(), It.IsAny <string>()), Times.Once); Assert.Collection(changes, x => Assert.Equal("Blob1.png", x.Name)); Assert.Equal(1, count); }
public async Task ProcessTasksAsync_BlobChangesProviderCache_ExpiredAfterExecution() { // Arrange var blobContents = new List <BlobEntry>() { new BlobInfo() { Name = "Blob1.png", Url = "testPath/Blob1.png", }, }; var imageChangesProvider = GetBlobImagesChangesProvider(blobContents); var thumbnailGenerationProcessor = new ThumbnailGenerationProcessor(_generator.Object, _settingsManager.Object, imageChangesProvider); var thumbnailOption = new ThumbnailOption() { FileSuffix = OptionSuffix }; var workPath = "testPath"; var task1 = new ThumbnailTask() { Id = Guid.NewGuid().ToString(), LastRun = null, WorkPath = workPath, ThumbnailOptions = new List <ThumbnailOption>() { thumbnailOption }, }; var cancellationToken = new CancellationTokenWrapper(new CancellationToken()); // Act await thumbnailGenerationProcessor.ProcessTasksAsync(new[] { task1 }, false, x => { }, cancellationToken); await thumbnailGenerationProcessor.ProcessTasksAsync(new[] { task1 }, false, x => { }, cancellationToken); //Assert StorageProviderMock.Verify(x => x.SearchAsync(It.IsAny <string>(), It.IsAny <string>()), Times.Exactly(2)); }
public virtual ThumbnailOption ToModel(ThumbnailOption option) { if (option == null) { throw new ArgumentNullException(nameof(option)); } option.Id = Id; option.Name = Name; option.FileSuffix = FileSuffix; option.ResizeMethod = EnumUtility.SafeParse(this.ResizeMethod, Core.Models.ResizeMethod.Crop); option.AnchorPosition = EnumUtility.SafeParse(this.AnchorPosition, Core.Models.AnchorPosition.Center); option.Width = Width; option.Height = Height; option.BackgroundColor = BackgroundColor; option.CreatedBy = CreatedBy; option.CreatedDate = CreatedDate; option.ModifiedBy = ModifiedBy; option.ModifiedDate = ModifiedDate; return(option); }
/// <summary> ///Generates a Thumbnail /// </summary> /// <param name="image"></param> /// <param name="option"></param> /// <returns></returns> protected virtual Image <Rgba32> GenerateThumbnail(Image <Rgba32> image, ThumbnailOption option) { var height = option.Height ?? image.Height; var width = option.Width ?? image.Width; var color = Rgba32.Transparent; if (!string.IsNullOrWhiteSpace(option.BackgroundColor)) { color = Rgba32.FromHex(option.BackgroundColor); } Image <Rgba32> result; switch (option.ResizeMethod) { case ResizeMethod.FixedSize: result = _imageResizer.FixedSize(image, width, height, color); break; case ResizeMethod.FixedWidth: result = _imageResizer.FixedWidth(image, width, color); break; case ResizeMethod.FixedHeight: result = _imageResizer.FixedHeight(image, height, color); break; case ResizeMethod.Crop: result = _imageResizer.Crop(image, width, height, option.AnchorPosition); break; default: throw new ArgumentOutOfRangeException($"ResizeMethod {option.ResizeMethod.ToString()} not supported."); } return(result); }
public async Task <ActionResult> UpdateThumbnailOption([FromBody] ThumbnailOption option) { await _thumbnailOptionService.SaveOrUpdateAsync(new[] { option }); return(Ok()); }
protected override void InitOption() { if (_opetion == null) _opetion = new ThumbnailOption(); }
public IHttpActionResult Create(ThumbnailOption option) { _thumbnailOptionService.SaveOrUpdate(new[] { option }); return(Ok(option)); }
public IHttpActionResult Update(ThumbnailOption option) { _thumbnailOptionService.SaveOrUpdate(new[] { option }); return(StatusCode(HttpStatusCode.NoContent)); }