Beispiel #1
0
        /// <summary>
        /// Builds the relative url for the specified image.
        /// </summary>
        public string BuildUrl(string virtualPath, int?width, int?height)
        {
            if (string.IsNullOrWhiteSpace(virtualPath))
            {
                throw new ArgumentException(nameof(ImageStorageProviderLocalWebsite), new ArgumentException(nameof(BuildUrl), new ArgumentNullException(nameof(virtualPath))));
            }

            var builder = new ImageUrlBuilder();

            if (width.HasValue && height.HasValue)
            {
                builder.Resize(i => i.Dimensions(width.Value, height.Value));
            }
            else if (width.HasValue || height.HasValue)
            {
                if (width.HasValue)
                {
                    builder.Resize(i => i.Width(width.Value));
                }

                if (height.HasValue)
                {
                    builder.Resize(i => i.Height(height.Value));
                }
            }
            else
            {
                builder.Cache(CacheOptions.Always);
            }

            builder.Resize(i => i.Crop());

            return(builder.BuildUrl(virtualPath));
        }
Beispiel #2
0
        private static string GenerateSrcsetValue(string imageUrl)
        {
            var imageUrlBuilder = new ImageUrlBuilder(imageUrl);

            return(string.Join(",", ProjectOptions.ResponsiveWidths.Select(w
                                                                           => $"{imageUrlBuilder.WithWidth(Convert.ToDouble(w)).Url} {w}w")));
        }
Beispiel #3
0
        private static string GenerateSrcsetValue(string imageUrl, IConfiguration configuration)
        {
            var imageUrlBuilder  = new ImageUrlBuilder(imageUrl);
            var responsiveWidths = configuration.GetSection(nameof(AppConfiguration)).Get <AppConfiguration>().ResponsiveWidthsArray;

            return(string.Join(",", responsiveWidths.Select(w => $"{imageUrlBuilder.WithWidth(Convert.ToDouble(w)).Url} {w}w")));
        }
        /// <summary>
        /// Generates an image URI using the source <param name="imageUri"/> and <see cref="ImageResizer.FluentExtensions.ImageUrlBuilder"/> instance.
        /// </summary>
        /// <param name="imageUri">The source image URI.</param>
        /// <param name="builder">A <see cref="ImageResizer.FluentExtensions.ImageUrlBuilder"/> instance to use for generating the image URI.</param>
        /// <returns>The generated image URI.</returns>
        public virtual string GetImageUrl(string imageUri, ImageUrlBuilder builder)
        {
            Ensure.Argument.NotNullOrEmpty(imageUri, "imageUri");
            Ensure.Argument.NotNull(builder, "builder");

            return(builder.BuildUrl(imageUri));
        }
Beispiel #5
0
        public static IImageLoaderType ImageWizard(this IUrlHelper urlHelper)
        {
            ImageUrlBuilder imageWizard = urlHelper.ActionContext.HttpContext.RequestServices.GetRequiredService <ImageUrlBuilder>();

            imageWizard.UrlHelper = urlHelper;

            return(imageWizard);
        }
        public void WithDpr_TransformedQuery(double dpr, string expectedQuery)
        {
            var builder = new ImageUrlBuilder(BaseUrl);

            builder.WithDpr(dpr);

            Assert.Equal(expectedQuery, builder.Url.Query);
        }
        public void WithFocalPointCrop_TransformedQuery(double x, double y, double z, string expectedQuery)
        {
            var builder = new ImageUrlBuilder(BaseUrl);

            builder.WithFocalPointCrop(x, y, z);

            Assert.Equal(expectedQuery, builder.Url.Query);
        }
        public void WithFormat_TransformedQuery(string format, string expectedQuery)
        {
            var builder = new ImageUrlBuilder(BaseUrl);

            builder.WithFormat(format);

            Assert.Equal(expectedQuery, builder.Url.Query);
        }
        public void WithQuality_TransformedQuery(double quality, string expectedQuery)
        {
            var builder = new ImageUrlBuilder(BaseUrl);

            builder.WithQuality(quality);

            Assert.Equal(expectedQuery, builder.Url.Query);
        }
        public void WithCompression_TransformedQuery(ImageCompression compression, string expectedQuery)
        {
            var builder = new ImageUrlBuilder(BaseUrl);

            builder.WithCompression(compression);

            Assert.Equal(expectedQuery, builder.Url.Query);
        }
        public void ConstructorWithUri_NewBuilder_BaseUrl()
        {
            var expected = new Uri(BaseUrl);

            var builder = new ImageUrlBuilder(expected);

            Assert.Equal(expected, builder.Url);
        }
        public void WithAutomaticFormat_TransformedQuery()
        {
            var builder = new ImageUrlBuilder(BaseUrl);

            builder.WithAutomaticFormat();

            Assert.Equal("?auto=webp", builder.Url.Query);
        }
        public void WithWidthAndHeight_TransformedQuery(double width, double height, string expectedQuery)
        {
            var builder = new ImageUrlBuilder(BaseUrl);

            builder.WithWidth(width).WithHeight(height);

            Assert.Equal(expectedQuery, builder.Url.Query);
        }
        public void WithFitModeEnum_TransformedQuery(ImageFitMode fitMode, string expectedQuery)
        {
            var builder = new ImageUrlBuilder(BaseUrl);

            builder.WithFitMode(fitMode);

            Assert.Equal(expectedQuery, builder.Url.Query);
        }
Beispiel #15
0
        public async Task <ArtistViewModel> GetArtistDetailsAsync(
            string artistSlug,
            string userId)
        {
            ArtistViewModel artistViewModel = new ArtistViewModel();

            await using NpgsqlConnection connection = new NpgsqlConnection(_databaseOptions.ConnectionString);
            await connection.OpenAsync();

            string sqlCommand = @"select a.id as artist_id, a.first_name, a.last_name, aslug.name as artist_slug, a.has_image, a.created_at, a.modified_at, a.is_approved from artists as a inner join artist_slugs as aslug on aslug.artist_id = a.id where case when @user_id <> '' then (a.is_approved = true or a.user_id = @user_id) else a.is_approved = true end and aslug.artist_id = (select artist_id from artist_slugs where name = @artist_slug) and aslug.is_primary = true order by a.first_name asc;";

            await using NpgsqlCommand command = new NpgsqlCommand(sqlCommand, connection);

            command.Parameters.AddWithValue("@user_id", userId);
            command.Parameters.AddWithValue("@artist_slug", artistSlug);

            await using NpgsqlDataReader reader = await command.ExecuteReaderAsync();

            if (reader.HasRows)
            {
                while (await reader.ReadAsync())
                {
                    int      artistId          = Convert.ToInt32(reader[0]);
                    string   firstName         = _textInfo.ToTitleCase(Convert.ToString(reader[1])).Trim();
                    string   lastName          = _textInfo.ToTitleCase(Convert.ToString(reader[2])).Trim();
                    string   artistPrimarySlug = Convert.ToString(reader[3]);
                    bool     artistHasImage    = Convert.ToBoolean(reader[4]);
                    DateTime createdAt         = Convert.ToDateTime(reader[5]);
                    DateTime?modifiedAt        = reader[6] == DBNull.Value ? (DateTime?)null : Convert.ToDateTime(reader[6]);
                    bool     isApproved        = Convert.ToBoolean(reader[7]);

                    string artistFullName = $"{firstName} {lastName}".Trim();

                    string artistImageUrl = ImageUrlBuilder
                                            .BuildImageUrl(artistHasImage, artistId, ImageSize.Standard);

                    string artistImageAlternateText = ImageUrlBuilder
                                                      .GetImageAlternateText(artistHasImage, artistFullName);

                    artistViewModel.Id                 = artistId;
                    artistViewModel.FirstName          = firstName;
                    artistViewModel.LastName           = lastName;
                    artistViewModel.FullName           = $"{firstName} {lastName}";
                    artistViewModel.PrimarySlug        = artistPrimarySlug;
                    artistViewModel.IsApproved         = isApproved;
                    artistViewModel.ImageUrl           = artistImageUrl;
                    artistViewModel.ImageAlternateText = artistImageAlternateText;
                    artistViewModel.CreatedAt          = createdAt;
                    artistViewModel.ModifiedAt         = modifiedAt;
                }
            }
            else
            {
                throw new ArtistNotFoundException(artistSlug);
            }

            return(artistViewModel);
        }
        public void WithRectangleCrop_TransformedQuery(double x, double y, double width, double height,
                                                       string expectedQuery)
        {
            var builder = new ImageUrlBuilder(BaseUrl);

            builder.WithRectangleCrop(x, y, width, height);

            Assert.Equal(expectedQuery, builder.Url.Query);
        }
        public void WithAutomaticCompressionAndBackup_TransformedQuery(ImageFormat format, string expectedFormat)
        {
            var builder       = new ImageUrlBuilder(BaseUrl);
            var expectedQuery = $"?fm={expectedFormat}&auto=webp";

            builder.WithAutomaticFormat(format);

            Assert.Equal(expectedQuery, builder.Url.Query);
        }
        public static void FromFabrik(this ImageUrlBuilder builder, ViewHelperConfiguration configuration)
        {
            builder.AddModifier(src => TransformUri(src, configuration.StorageServerUri, configuration.MediaServerUri));

            if (configuration.Version.IsNotNullOrEmpty())
            {
                builder.SetParameter("v", configuration.Version);
            }
        }
        public void WithFormatEnum_TransformedQuery(ImageFormat format, string expectedFormat)
        {
            var builder       = new ImageUrlBuilder(BaseUrl);
            var expectedQuery = $"?fm={expectedFormat}";

            builder.WithFormat(format);

            Assert.Equal(expectedQuery, builder.Url.Query);
        }
Beispiel #20
0
        /// <summary>
        /// Builds a url to a contentful image using the specified properties.
        /// </summary>
        /// <returns>The url.</returns>
        public async Task <string> BuildUrl()
        {
            if (Asset != null)
            {
                Url = Asset.File?.Url;
                if (string.IsNullOrEmpty(Url))
                {
                    AssetId = Asset.SystemProperties?.Id;
                }
            }

            if (string.IsNullOrEmpty(Url))
            {
                var asset = await _client.GetAssetAsync(AssetId, "");

                Url = asset.File.Url;
            }

            var queryBuilder = new ImageUrlBuilder();

            if (Width > 0)
            {
                queryBuilder.SetWidth(Width);
            }

            if (Height > 0)
            {
                queryBuilder.SetHeight(Height);
            }

            if (JpgQuality.HasValue)
            {
                queryBuilder.SetJpgQuality(JpgQuality.Value);
            }

            if (CornerRadius.HasValue)
            {
                queryBuilder.SetCornerRadius(CornerRadius.Value);
            }

            if (!string.IsNullOrEmpty(BackgroundColor))
            {
                queryBuilder.SetBackgroundColor(BackgroundColor);
            }

            queryBuilder.SetFocusArea(FocusArea);
            queryBuilder.SetResizingBehaviour(ResizeBehaviour);
            queryBuilder.SetFormat(Format);

            if (ProgressiveJpg)
            {
                queryBuilder.UseProgressiveJpg();
            }

            return($"{Url}{queryBuilder.Build()}");
        }
        public void AddingResizeBehaviourDefaulShouldNotAddAnyQueryString()
        {
            //Arrange
            var builder = new ImageUrlBuilder();
            //Act
            var result = builder.SetResizingBehaviour(ImageResizeBehaviour.Default).Build();

            //Assert
            Assert.Equal(string.Empty, result);
        }
        public void SettingJpgQualityShouldSetCorrectQueryString(int quality)
        {
            //Arrange
            var builder = new ImageUrlBuilder();
            //Act
            var result = builder.SetJpgQuality(quality).Build();

            //Assert
            Assert.Equal($"?q={quality}", result);
        }
        public void AddingFocusAreaShouldSetCorrectQueryString(ImageFocusArea focusArea)
        {
            //Arrange
            var builder = new ImageUrlBuilder();
            //Act
            var result = builder.SetFocusArea(focusArea).Build();

            //Assert
            Assert.Equal($"?f={focusArea.ToString().ToLower()}", result);
        }
        public void SettingCornerRadiusShouldSetCorrectQueryString(int radius)
        {
            //Arrange
            var builder = new ImageUrlBuilder();
            //Act
            var result = builder.SetCornerRadius(radius).Build();

            //Assert
            Assert.Equal($"?r={radius}", result);
        }
        public void SettingBackgroundShouldAddCorrectQueryString(string bg, string expected)
        {
            //Arrange
            var builder = new ImageUrlBuilder();
            //Act
            var result = builder.SetBackgroundColor(bg).Build();

            //Assert
            Assert.Equal(expected, result);
        }
        public void AddingMultipleQueryParametersShouldCorrectlyAddQueryStringValues()
        {
            //Arrange
            var builder = new ImageUrlBuilder();
            //Act
            var result = builder.SetHeight(23).SetWidth(34).Build();

            //Assert
            Assert.Equal("?h=23&w=34", result);
        }
        public void Setting8BitPngAndFormatInDifferentOrderShouldSetCorrectQueryString()
        {
            //Arrange
            var builder = new ImageUrlBuilder();
            //Act
            var result = builder.Set8BitPng().SetFormat(ImageFormat.Png).Build();

            //Assert
            Assert.Equal($"?fm=png&fl=png8", result);
        }
        public void SettingFormatToJpgShouldAllowForJpgSpecificValues()
        {
            //Arrange
            var builder = new ImageUrlBuilder();
            //Act
            var result = builder.SetFormat(ImageFormat.Jpg).SetJpgQuality(34).UseProgressiveJpg().Build();

            //Assert
            Assert.Equal("?fm=jpg&q=34&fl=progressive", result);
        }
        public void Setting8BitPngShouldSetCorrectQueryString()
        {
            //Arrange
            var builder = new ImageUrlBuilder();
            //Act
            var result = builder.Set8BitPng().Build();

            //Assert
            Assert.Equal($"?fm=png&fl=png8", result);
        }
        public void AddingImageFormatShouldSetCorrectQueryString(ImageFormat format, string expected)
        {
            //Arrange
            var builder = new ImageUrlBuilder();
            //Act
            var result = builder.SetFormat(format).Build();

            //Assert
            Assert.Equal(expected, result);
        }
        public static string ImageUrl(this UrlHelper url, string imagePath, ImageUrlBuilder builder)
        {
            if (string.IsNullOrEmpty(imagePath))
                throw new ArgumentNullException("imagePath");

            if (builder == null)
                throw new ArgumentNullException("builder");

            if (VirtualPathUtility.IsAppRelative(imagePath))
                imagePath = VirtualPathUtility.ToAbsolute(imagePath);

            return builder.BuildUrl(imagePath);
        }
        public static string ImageUrl(this UrlHelper url, string imagePath, Action<ImageUrlBuilder> configure)
        {
            if (string.IsNullOrEmpty(imagePath))
                throw new ArgumentNullException("imagePath");

            if (configure == null)
                throw new ArgumentNullException("configure");

            var builder = new ImageUrlBuilder();
            configure(builder);

            return url.ImageUrl(imagePath, builder);
        }
 public void SetUp()
 {
     builder = new ImageUrlBuilder();
 }
 internal AlignmentExpression(ImageUrlBuilder builder) : base(builder) { }
 public static MvcHtmlString BuildImage(this HtmlHelper html, string src, ImageUrlBuilder builder, string alternateText = "", object htmlAttributes = null)
 {
     var imageUrl = html.CreateUrlHelper().ImageUrl(src, builder);
     return html.Image(imageUrl.ToString());
 }