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) }); }