public void GeneratorName()
        {
            var uid = Guid.NewGuid();
            var gen = new GuidFileNameGenerator(uid);

            Assert.AreEqual(gen.Name, nameof(GuidFileNameGenerator));
        }
        public void NullEmptyWhiteSpaceAppendix(string name, string appendix)
        {
            var uid      = Guid.NewGuid();
            var gen      = new GuidFileNameGenerator(uid);
            var fileName = gen.GetFileName(name, appendix);

            Assert.IsTrue(fileName == $"img-{uid}.png");
        }
        public void LetterCase()
        {
            var uid      = Guid.NewGuid();
            var gen      = new GuidFileNameGenerator(uid);
            var fileName = gen.GetFileName("996 Sucks.PNG", "ICU");

            Assert.IsTrue(fileName == $"img-{uid}-icu.png");
        }
        public void Appendix()
        {
            var uid      = Guid.NewGuid();
            var gen      = new GuidFileNameGenerator(uid);
            var fileName = gen.GetFileName("Microsoft Rocks.png", "origin");

            Assert.IsTrue(fileName == $"img-{uid}-origin.png");
        }
        public void EmptyFileName(string name)
        {
            var uid = Guid.NewGuid();
            var gen = new GuidFileNameGenerator(uid);

            Assert.Throws <ArgumentNullException>(() =>
            {
                gen.GetFileName(name);
            });
        }
Example #6
0
        public void TestInvalidFileName(string name)
        {
            var uid = Guid.NewGuid();
            var gen = new GuidFileNameGenerator(uid);

            Assert.Catch <ArgumentException>(() =>
            {
                var fileName = gen.GetFileName(name);
            });
        }
        public void TestNullEmptyWhiteSpaceAppendix()
        {
            var uid       = Guid.NewGuid();
            var gen       = new GuidFileNameGenerator(uid);
            var fileName1 = gen.GetFileName("Choose .NET Core.png", string.Empty);
            var fileName2 = gen.GetFileName("And Microsoft Azure.png", null);
            var fileName3 = gen.GetFileName("Stay away from 996.png", " ");

            Assert.IsTrue(fileName1 == $"img-{uid}.png");
            Assert.IsTrue(fileName2 == $"img-{uid}.png");
            Assert.IsTrue(fileName3 == $"img-{uid}.png");
        }
        public void TestInvalidFileName()
        {
            var uid = Guid.NewGuid();
            var gen = new GuidFileNameGenerator(uid);

            Assert.Catch <ArgumentException>(() =>
            {
                var fileName = gen.GetFileName("007 Stupid");
            });
            Assert.Catch <ArgumentException>(() =>
            {
                var fileName = gen.GetFileName(".icu");
            });
            Assert.Catch <ArgumentNullException>(() =>
            {
                var fileName = gen.GetFileName(" ");
            });
        }
Example #9
0
        public async Task <IActionResult> UploadImageAsync(IFormFile file)
        {
            try
            {
                if (null == file)
                {
                    Logger.LogError("file is null.");
                    return(BadRequest());
                }

                if (file.Length > 0)
                {
                    var name = Path.GetFileName(file.FileName);
                    if (name == null)
                    {
                        return(BadRequest());
                    }

                    var ext = Path.GetExtension(name).ToLower();
                    var allowedImageFormats = new[] { ".png", ".jpg", ".jpeg", ".bmp", ".gif" };
                    if (!allowedImageFormats.Contains(ext))
                    {
                        Logger.LogError($"Invalid file extension: {ext}");
                        return(BadRequest());
                    }

                    var uid = Guid.NewGuid();
                    IFileNameGenerator gen = new GuidFileNameGenerator(uid);
                    var primaryFileName    = gen.GetFileName(name);
                    var secondaryFieName   = gen.GetFileName(name, "origin");

                    using (var stream = new MemoryStream())
                    {
                        await file.CopyToAsync(stream);

                        // Add watermark
                        MemoryStream watermarkedStream = null;
                        if (_blogConfig.WatermarkSettings.IsEnabled && ext != ".gif")
                        {
                            var watermarker = new ImageWatermarker(stream, ext)
                            {
                                SkipWatermarkForSmallImages = true,
                                SmallImagePixelsThreshold   = Constants.SmallImagePixelsThreshold
                            };

                            Logger.LogInformation($"Adding watermark onto image {primaryFileName}");

                            watermarkedStream = watermarker.AddWatermark(
                                _blogConfig.WatermarkSettings.WatermarkText,
                                Color.FromArgb(128, 128, 128, 128),
                                WatermarkPosition.BottomRight,
                                15,
                                _blogConfig.WatermarkSettings.FontSize);
                        }

                        var response = await _imageStorageProvider.InsertAsync(primaryFileName,
                                                                               watermarkedStream != null?
                                                                               watermarkedStream.ToArray() :
                                                                                   stream.ToArray());

                        if (_blogConfig.WatermarkSettings.KeepOriginImage)
                        {
                            var arr = stream.ToArray();
                            _ = Task.Run(async() => await _imageStorageProvider.InsertAsync(secondaryFieName, arr));
                        }

                        Logger.LogInformation("Image Uploaded: " + JsonConvert.SerializeObject(response));

                        if (response.IsSuccess)
                        {
                            return(Json(new { location = $"/uploads/{response.Item}" }));
                        }
                        Logger.LogError(response.Message);
                        return(ServerError());
                    }
                }
                return(BadRequest());
            }
            catch (Exception e)
            {
                Logger.LogError(e, "Error uploading image.");
                return(ServerError());
            }
        }