Exemplo n.º 1
0
        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)
            });
        }