private async Task UploadImagesWithDifferentSizesAsync(Remark remark, RemarkUser user, File originalPhoto, string metadata = null) { var extension = originalPhoto.Name.Split('.').Last(); var uniqueNumber = _uniqueNumberGenerator.Generate(); var groupId = Guid.NewGuid(); var size = "big"; var fileName = metadata == null ? $"remark_{remark.Id:N}_{uniqueNumber}.{extension}" : $"remark_{remark.Id:N}_{metadata}_{uniqueNumber}.{extension}"; var baseImageUrl = ""; await _fileHandler.UploadAsync(originalPhoto, fileName, (baseUrl, fullUrl) => { baseImageUrl = baseUrl; remark.AddPhoto(RemarkPhoto.Create(groupId, fileName, size, fullUrl, user, metadata)); }); var smallImageFileName = $"200x200/{fileName}"; var mediumImageFileName = $"600x600/{fileName}"; var smallImageUrl = $"{baseImageUrl}/{smallImageFileName}"; var mediumImageUrl = $"{baseImageUrl}/{mediumImageFileName}"; remark.AddPhoto(RemarkPhoto.Create(groupId, smallImageFileName, "small", smallImageUrl, user, metadata)); remark.AddPhoto(RemarkPhoto.Create(groupId, mediumImageFileName, "medium", mediumImageUrl, user, metadata)); //Trigger resizing images using AWS Lambda, so they shall be accessible with https. await Task.WhenAll(new List <Task> { TriggerImageResizeAsync(smallImageUrl), TriggerImageResizeAsync(mediumImageUrl) }); }
protected static void Initialize() { RemarkRepositoryMock = new Mock <IRemarkRepository>(); UserRepositoryMock = new Mock <IUserRepository>(); RemarkPhotoServiceMock = new Mock <IRemarkPhotoService>(); GeneralSettings = new GeneralSettings { AllowedDistance = 15.0 }; RemarkStateService = new RemarkStateService(RemarkRepositoryMock.Object, UserRepositoryMock.Object, RemarkPhotoServiceMock.Object, GeneralSettings); var user = new User(UserId, "name", "user"); var category = new Category("category"); Description = "test"; Remark = new Remark(RemarkId, user, category, Location); Remark.AddPhoto(RemarkPhoto.Small(Guid.NewGuid(), "test.jpg", "http://my-test-image.com", RemarkUser.Create(user))); RemarkRepositoryMock.Setup(x => x.GetByIdAsync(Moq.It.IsAny <Guid>())) .ReturnsAsync(Remark); UserRepositoryMock.Setup(x => x.GetByUserIdAsync(Moq.It.IsAny <string>())) .ReturnsAsync(User); }
protected static void Initialize() { FileHandlerMock = new Mock <IFileHandler>(); RemarkRepositoryMock = new Mock <IRemarkRepository>(); RemarkCategoryRepositoryMock = new Mock <ICategoryRepository>(); TagRepositoryMock = new Mock <ITagRepository>(); UserRepositoryMock = new Mock <IUserRepository>(); CategoryRepositoryMock = new Mock <ICategoryRepository>(); GroupRepositoryMock = new Mock <IGroupRepository>(); ImageServiceMock = new Mock <IImageService>(); RemarkPhotoServiceMock = new Mock <IRemarkPhotoService>(); UniqueNumberGeneratorMock = new Mock <IUniqueNumberGenerator>(); GeneralSettings = new GeneralSettings { AllowedDistance = 15.0 }; RemarkService = new RemarkService(RemarkRepositoryMock.Object, UserRepositoryMock.Object, CategoryRepositoryMock.Object, TagRepositoryMock.Object, GroupRepositoryMock.Object, RemarkPhotoServiceMock.Object, GeneralSettings); var user = new User(UserId, "name", "user"); var category = new Category("category"); Remark = new Remark(RemarkId, user, category, Location); Remark.AddPhoto(RemarkPhoto.Small(Guid.NewGuid(), "test.jpg", "http://my-test-image.com", RemarkUser.Create(user))); RemarkRepositoryMock.Setup(x => x.GetByIdAsync(Moq.It.IsAny <Guid>())) .ReturnsAsync(Remark); UserRepositoryMock.Setup(x => x.GetByUserIdAsync(Moq.It.IsAny <string>())) .ReturnsAsync(User); ImageServiceMock.Setup(x => x.ProcessImage(Moq.It.IsAny <File>())) .Returns(new Dictionary <string, File> { { "small", File }, { "medium", File }, { "big", File } }); }