Пример #1
0
 public override async Task DeleteImageAsync(string fileKey, ImageRules rules)
 {
     var deleteRequest = new DeleteObjectRequest
     {
         BucketName = bucketName,
         Key        = $"{environment}/{rules.Folder}/{fileKey}"
     };
     await s3Client.DeleteObjectAsync(deleteRequest);
 }
Пример #2
0
        public async Task <string> ReplaceImageAsync(string oldKey, IFormFile image, ImageRules rules)
        {
            if (!string.IsNullOrWhiteSpace(oldKey))
            {
                await DeleteImageAsync(oldKey, rules);
            }

            return(await UploadImageAsync(image, rules));
        }
Пример #3
0
        public async Task ReplaceImage_NoOldKey_DeleteNotCalled()
        {
            var image = Substitute.For <IFormFile>();
            var rules = new ImageRules(0, 0, 0, "", "");

            await testObj.ReplaceImageAsync("", image, rules);

            Assert.AreEqual(0, testObj.deleteCalls);
        }
Пример #4
0
        public void UploadImage_NotValid_ArgumentException()
        {
            var image = Substitute.For <IFormFile>();

            image.Length.Returns(2);
            var rules = new ImageRules(1, 0, 0, "", "");

            Assert.ThrowsAsync <ArgumentException>(() => testObj.UploadImageAsync(image, rules));
        }
Пример #5
0
        public void GetImageUrl_HasKey_ReturnUrl()
        {
            const string missingUrl = "missingURL";
            var          rules      = new ImageRules(1, 1, 1, "folder", missingUrl);

            var url = testObj.GetImageUrl("Key", rules);

            Assert.AreNotEqual(missingUrl, url);
        }
Пример #6
0
        public void GetImageUrl_MissingKey_ReturnMissingUrl(string key)
        {
            const string missingUrl = "missingURL";
            var          rules      = new ImageRules(1, 1, 1, "folder", missingUrl);

            var url = testObj.GetImageUrl(key, rules);

            Assert.AreEqual(missingUrl, url);
        }
Пример #7
0
        public override Task DeleteImageAsync(string fileKey, ImageRules rules)
        {
            var folderPath = GetFolderPath(rules.Folder);
            var filePath   = Path.Combine(folderPath, fileKey);

            if (File.Exists(filePath))
            {
                File.Delete(filePath);
            }
            return(Task.CompletedTask);
        }
Пример #8
0
        public string GetUserProfilePicUrl(string id, string imageKey, ImageRules rules)
        {
            const int defaultPicturesCount = 24;

            if (string.IsNullOrWhiteSpace(imageKey))
            {
                var idHash    = id.Select(c => (int)c).Sum();
                var defaultID = idHash % defaultPicturesCount;
                return($"/images/profile-default/profile-default-{defaultID}.jpg");
            }

            return(GetImageUrl(imageKey, ClimbImageRules.ProfilePic));
        }
Пример #9
0
        public async Task <string> UploadImageAsync(IFormFile image, ImageRules rules)
        {
            if (!IsValid(image, rules))
            {
                throw new ArgumentException($"Image size {image.Length:N0}B exceeds limit {rules.MaxSize:N0}B.");
            }

            EnsureFolder(rules.Folder);

            var fileKey = GenerateFileKey(image);

            await UploadImageInternalAsync(image, rules.Folder, fileKey);

            return(fileKey);
        }
Пример #10
0
 private static bool IsValid(IFormFile image, ImageRules rules)
 {
     return(image.Length <= rules.MaxSize);
 }
Пример #11
0
 public string GetImageUrl(string imageKey, ImageRules rules) => string.IsNullOrWhiteSpace(imageKey) ? rules.MissingUrl : $"{root}/{rules.Folder}/{imageKey}";
Пример #12
0
 public abstract Task DeleteImageAsync(string fileKey, ImageRules rules);
Пример #13
0
 public override Task DeleteImageAsync(string fileKey, ImageRules rules)
 {
     ++deleteCalls;
     return(Task.CompletedTask);
 }