/// <summary>
        /// Create query from current parameters for search request.
        /// </summary>
        /// <returns>Query from current parameters for search request</returns>
        public string ConfigToString()
        {
            StringBuilder builder = new StringBuilder();


            if (Type != AnimeType.EveryType)
            {
                builder.Append($"&type={Type.GetDescription()}");
            }

            if (Score.HasValue)
            {
                builder.Append($"&score={Score}");
            }

            if (Rating != AgeRating.EveryRating)
            {
                builder.Append($"&rated={Rating.GetDescription()}");
            }

            if (Status != AiringStatus.EveryStatus)
            {
                builder.Append($"&status={Status.GetDescription()}");
            }

            if (StartDate.HasValue)
            {
                builder.Append($"&start_date={StartDate.Value.ToString("yyyy-MM-dd")}");
            }

            if (EndDate.HasValue)
            {
                builder.Append($"&end_date={EndDate.Value.ToString("yyyy-MM-dd")}");
            }

            if (Genres.Count > 0)
            {
                var genresId = Genres.Select(x => x.GetDescription()).ToArray();

                builder.Append($"&genre={string.Join(",", genresId)}");
            }

            if (GenreIncluded)
            {
                builder.Append($"$genre_exclude=0");
            }

            if (OrderBy != AnimeSearchSortable.NoSorting)
            {
                builder.Append($"&order_by={OrderBy.GetDescription()}");
                builder.Append($"&sort={SortDirection.GetDescription()}");
            }

            if (ProducerId > 0)
            {
                builder.Append($"&producer={ProducerId}");
            }

            return(builder.ToString().TrimEnd('&'));
        }
Exemple #2
0
        /// <summary>
        /// Create query from current parameters for search request.
        /// </summary>
        /// <returns>Query from current parameters for search request</returns>
        public string ConfigToString()
        {
            StringBuilder builder = new StringBuilder();

            if (!string.IsNullOrWhiteSpace(Query))
            {
                builder.Append($"q={Query}");
            }

            if (Page > 0)
            {
                builder.Append($"&page={Page}");
            }

            if (OrderBy != UserListAnimeSearchSortable.NoSorting)
            {
                Guard.IsValidEnum(OrderBy, nameof(OrderBy));
                Guard.IsValidEnum(SortDirection, nameof(SortDirection));
                builder.Append($"&order_by={OrderBy.GetDescription()}");
                builder.Append($"&sort={SortDirection.GetDescription()}");

                if (OrderBy2 != UserListAnimeSearchSortable.NoSorting)
                {
                    Guard.IsValidEnum(OrderBy2, nameof(OrderBy2));
                    builder.Append($"&order_by2={OrderBy2.GetDescription()}");
                }
            }

            if (ProducerId > 0)
            {
                builder.Append($"&producer={ProducerId}");
            }

            if (Year > 0)
            {
                Guard.IsValidEnum(Season, nameof(Season));
                builder.Append($"&year={Year}");
                builder.Append($"&season={Season.GetDescription()}");
            }

            if (AiringStatus != UserListAnimeAiringStatus.NoFilter)
            {
                Guard.IsValidEnum(AiringStatus, nameof(AiringStatus));
                builder.Append($"&airing_status={AiringStatus.GetDescription()}");
            }

            // change first ampersand into question mark
            return(string.Concat("?", builder.ToString().TrimEnd('&').TrimStart('&')));
        }
        /// <summary>
        /// Create query from current parameters for search request.
        /// </summary>
        /// <returns>Query from current parameters for search request</returns>
        public string ConfigToString()
        {
            StringBuilder builder = new StringBuilder();

            if (!string.IsNullOrWhiteSpace(Query))
            {
                builder.Append($"q={Query}");
            }

            if (Page > 0)
            {
                builder.Append($"&page={Page}");
            }

            if (OrderBy != UserListMangaSearchSortable.NoSorting)
            {
                builder.Append($"&order_by={OrderBy.GetDescription()}");
                builder.Append($"&sort={SortDirection.GetDescription()}");

                if (OrderBy2 != UserListMangaSearchSortable.NoSorting)
                {
                    builder.Append($"&order_by2={OrderBy2.GetDescription()}");
                }
            }

            if (MagazineId > 0)
            {
                builder.Append($"&magazine={MagazineId}");
            }

            if (PublishingStatus != UserListMangaPublishingStatus.NoFilter)
            {
                builder.Append($"&publishing_status={PublishingStatus.GetDescription()}");
            }

            // change first ampersand into question mark
            return(string.Concat("?", builder.ToString().TrimEnd('&').TrimStart('&')));
        }
Exemple #4
0
        /// <summary>
        /// Create query from current parameters for search request.
        /// </summary>
        /// <returns>Query from current parameters for search request</returns>
        public string ConfigToString()
        {
            StringBuilder builder = new StringBuilder();

            if (Type != MangaType.EveryType)
            {
                Guard.IsValidEnum(Type, nameof(Type));
                builder.Append($"&type={Type.GetDescription()}");
            }

            if (Score.HasValue)
            {
                builder.Append($"&score={Score}");
            }

            if (Rating != AgeRating.EveryRating)
            {
                Guard.IsValidEnum(Rating, nameof(Rating));
                builder.Append($"&rated={Rating.GetDescription()}");
            }

            if (Status != AiringStatus.EveryStatus)
            {
                Guard.IsValidEnum(Status, nameof(Status));
                builder.Append($"&status={Status.GetDescription()}");
            }

            if (StartDate.HasValue)
            {
                builder.Append($"&start_date={StartDate.Value:yyyy-MM-dd}");
            }

            if (EndDate.HasValue)
            {
                builder.Append($"&end_date={EndDate.Value:yyyy-MM-dd}");
            }

            if (Genres.Count > 0)
            {
                var genresId = Genres.Select(genreSearch =>
                {
                    Guard.IsValidEnum(genreSearch, nameof(genreSearch));
                    return(genreSearch.GetDescription());
                }).ToArray();

                builder.Append($"&genre={string.Join(",", genresId)}");
            }

            if (!GenreIncluded)
            {
                builder.Append($"&genre_exclude=0$");
            }

            if (OrderBy != MangaSearchSortable.NoSorting)
            {
                Guard.IsValidEnum(OrderBy, nameof(OrderBy));
                Guard.IsValidEnum(SortDirection, nameof(SortDirection));
                builder.Append($"&order_by={OrderBy.GetDescription()}");
                builder.Append($"&sort={SortDirection.GetDescription()}");
            }

            if (MagazineId > 0)
            {
                builder.Append($"&magazine={MagazineId}");
            }

            return(builder.ToString().Trim('&'));
        }
Exemple #5
0
        /// <summary>
        /// Create query from current parameters for search request.
        /// </summary>
        /// <returns>Query from current parameters for search request</returns>
        public string ConfigToString()
        {
            var builder = new StringBuilder().Append('?');

            if (Page.HasValue)
            {
                Guard.IsGreaterThanZero(Page.Value, nameof(Page.Value));
                builder.Append($"page={Page.Value}&");
            }

            if (PageSize.HasValue)
            {
                Guard.IsGreaterThanZero(PageSize.Value, nameof(PageSize.Value));
                Guard.IsLesserOrEqualThan(PageSize.Value, ParameterConsts.MaximumPageSize, nameof(PageSize.Value));
                builder.Append($"limit={PageSize.Value}&");
            }

            if (!string.IsNullOrWhiteSpace(Query))
            {
                builder.Append($"q={Query}&");
            }

            if (Letter.HasValue)
            {
                Guard.IsLetter(Letter.Value, nameof(Letter.Value));
                builder.Append($"letter={Letter.Value}&");
            }

            if (Type != AnimeType.EveryType)
            {
                Guard.IsValidEnum(Type, nameof(Type));
                builder.Append($"type={Type.GetDescription()}&");
            }

            if (MinimumScore.HasValue)
            {
                builder.Append($"min_score={MinimumScore}&");
            }

            if (MaximumScore.HasValue)
            {
                builder.Append($"max_score={MaximumScore}&");
            }

            if (Rating != AnimeAgeRating.EveryRating)
            {
                Guard.IsValidEnum(Rating, nameof(Rating));
                builder.Append($"rated={Rating.GetDescription()}&");
            }

            if (Status != AiringStatus.EveryStatus)
            {
                Guard.IsValidEnum(Status, nameof(Status));
                builder.Append($"status={Status.GetDescription()}&");
            }

            if (Genres.Count > 0)
            {
                var genresIds = Genres.Select(genreSearch =>
                {
                    Guard.IsValidEnum(genreSearch, nameof(genreSearch));
                    return(genreSearch.GetDescription());
                }).ToArray();

                builder.Append($"genres={string.Join(",", genresIds)}&");
            }


            if (ExcludedGenres.Count > 0)
            {
                var genresIds = ExcludedGenres.Select(genreSearch =>
                {
                    Guard.IsValidEnum(genreSearch, nameof(genreSearch));
                    return(genreSearch.GetDescription());
                }).ToArray();

                builder.Append($"genre_exclude={string.Join(",", genresIds)}&");
            }

            if (OrderBy != AnimeSearchOrderBy.NoSorting)
            {
                Guard.IsValidEnum(OrderBy, nameof(OrderBy));
                Guard.IsValidEnum(SortDirection, nameof(SortDirection));
                builder.Append($"order_by={OrderBy.GetDescription()}&");
                builder.Append($"sort={SortDirection.GetDescription()}&");
            }

            if (ProducerIds.Any())
            {
                builder.Append($"producers={string.Join(",", ProducerIds)}&");
            }

            if (Sfw)
            {
                builder.Append("sfw");
            }

            return(builder.ToString().Trim('&'));
        }