/// <summary>
        /// This method returns Wallpapers matching a given Search.
        /// </summary>
        /// <param name="term">	The search term used for the matching.</param>
        /// <param name="infoLevel">The quantity of info returned for each wallpaper.</param>
        /// <param name="Page">Page number, there are 30 wallpapers per page.</param>
        /// <param name="width">Get only wallpapers width a specific width.</param>
        /// <param name="height">Get only wallpapers width a specific height.</param>
        /// <param name="operator">The type of resolution filter, <= will be used with 'max', = with 'equal' and >= with 'min'.</param>
        /// <returns></returns>
        public async Task <Collection <WallpapersResponse> > Search(
            string term,
            WallpaperAbyssInfoLevel infoLevel = WallpaperAbyssInfoLevel.One,
            int?Page   = null,
            int?width  = null,
            int?height = null,
            WallpaperAbyssOperator @operator = WallpaperAbyssOperator.equal
            )
        {
            var arguments = new WallpaperAbyssArgumentsBuilder()
            {
                Auth      = _auth,
                Method    = WallpaperAbyssMethod.search,
                Term      = term,
                InfoLevel = infoLevel,
                Page      = Page,
                Width     = width,
                Height    = height,
                Operator  = @operator
            };

            var result = await GeneralSearchAsync(arguments);

            return(result.ResponseObject.Wallpapers);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Validate required arguments and set default values.
        /// </summary>
        /// <returns></returns>
        private bool IsValid(WallpaperAbyssArgumentsBuilder arguments)
        {
            if (string.IsNullOrWhiteSpace(arguments.Auth))
            {
                return(false);
            }

            if (Count > 30)
            {
                Count = 30;
            }

            if (Count < 1)
            {
                Count = 1;
            }

            if (arguments.Page <= 0)
            {
                arguments.Page = 1;
            }

            if (arguments.Page > 1000)
            {
                arguments.Page = 1000;
            }

            return(true);
        }
        /// <summary>
        ///  General searching method. Result depends on provided arguments. Read https://wall.alphacoders.com/api.php for more informations.
        /// </summary>
        /// <param name="arguments"></param>
        /// <returns></returns>
        public async Task <WallpaperAbyssQueryResult> GeneralSearchAsync(WallpaperAbyssArgumentsBuilder arguments)
        {
            if (string.IsNullOrWhiteSpace(arguments.Auth))
            {
                arguments.Auth = _auth;
            }

            var uri = BuildQueryUri(arguments);

            return(await SearchAsync <WallpaperAbyssQueryResult>(uri, arguments));
        }
Ejemplo n.º 4
0
 public WallpaperAbyssQueryResult()
 {
     WallpaperAbyssArguments       = new WallpaperAbyssArgumentsBuilder();
     WallpaperAbyssGeneralResponse = new WallpaperAbyssGeneralResponse();
     Arguments      = null;
     ResponseObject = null;
     RawJson        = string.Empty;
     Response       = new HttpResponseMessage();
     StartTime      = DateTime.UtcNow;
     Url            = string.Empty;
 }
        /// <summary>
        /// This method returns the list of Collections used on Wallpaper Abyss.
        /// </summary>
        /// <returns>Collections used on Wallpaper Abyss.</returns>
        public async Task <Collection <ListResponse> > GetCollectionsAsync()
        {
            var arguments = new WallpaperAbyssArgumentsBuilder()
            {
                Auth   = _auth,
                Method = WallpaperAbyssMethod.collection_list
            };

            var result = await GeneralSearchAsync(arguments);

            return(result.ResponseObject.Collections);
        }
        /// <summary>
        /// This method returns Sub categories list.
        /// </summary>
        /// <param name="id">ID of the Category.</param>
        /// <returns></returns>
        public async Task <Collection <ListResponse> > GetSubCategoriesAsync(int id)
        {
            var arguments = new WallpaperAbyssArgumentsBuilder()
            {
                Auth   = _auth,
                Method = WallpaperAbyssMethod.sub_category_list,
                ID     = id
            };

            var result = await GeneralSearchAsync(arguments);

            return(result.ResponseObject.Groups);
        }
        /// <summary>
        /// This method returns sorted Wallpapers.
        /// </summary>
        /// <param name="sort">Way of sorting.</param>
        /// <param name="infoLevel">The quantity of info returned for each wallpaper.</param>
        /// <param name="page">Page number, there are 30 wallpapers per page (1-1000).</param>
        /// <param name="width">Get only wallpapers width a specific width.</param>
        /// <param name="height">Get only wallpapers width a specific height.</param>
        /// <param name="operator">The type of resolution filter, <= will be used with 'max', = with 'equal' and >= with 'min'.</param>
        /// <param name="checkLast">You can request an additional output letting you know if this is the last page of results for this set of parameters.</param>
        /// <returns>Sorted Wallpapers.</returns>
        public async Task <Collection <WallpapersResponse> > GetSortedWallpapersAsync(
            WallpaperAbyssSort sort,
            WallpaperAbyssInfoLevel infoLevel = WallpaperAbyssInfoLevel.One,
            int?page   = null,
            int?width  = null,
            int?height = null,
            WallpaperAbyssOperator @operator  = WallpaperAbyssOperator.equal,
            WallpaperAbyssCheckLast checkLast = WallpaperAbyssCheckLast.Zero
            )
        {
            var arguments = new WallpaperAbyssArgumentsBuilder()
            {
                Auth      = _auth,
                InfoLevel = infoLevel,
                Page      = page,
                Width     = width,
                Height    = height,
                Operator  = @operator,
                CheckLast = checkLast
            };

            switch (sort)
            {
            case WallpaperAbyssSort.newest:
                arguments.Method = WallpaperAbyssMethod.newest;
                break;

            case WallpaperAbyssSort.rating:
                arguments.Method = WallpaperAbyssMethod.highest_rated;
                break;

            case WallpaperAbyssSort.views:
                arguments.Method = WallpaperAbyssMethod.by_views;
                break;

            case WallpaperAbyssSort.favorites:
                arguments.Method = WallpaperAbyssMethod.by_favorites;
                break;
            }

            var result = await GeneralSearchAsync(arguments);

            return(result.ResponseObject.Wallpapers);
        }
        /// <summary>
        /// This method returns the total count of Wallpapers
        /// </summary>
        /// <param name="width">Get only wallpapers width a specific width.</param>
        /// <param name="height">Get only wallpapers width a specific height.</param>
        /// <param name="operator">The type of resolution filter, <= will be used with 'max', = with 'equal' and >= with 'min'.</param>
        /// <returns>Total number of wallpapers (-1 is error).</returns>
        public async Task <int> GetTotalCountOfWallpapersAsync(
            int?width  = null,
            int?height = null,
            WallpaperAbyssOperator @operator = WallpaperAbyssOperator.equal
            )
        {
            var arguments = new WallpaperAbyssArgumentsBuilder()
            {
                Auth     = _auth,
                Method   = WallpaperAbyssMethod.wallpaper_count,
                Width    = width,
                Height   = height,
                Operator = @operator
            };

            var result = await GeneralSearchAsync(arguments);

            return(GetCountResult(result));
        }
        private async Task <int> WallpapersCountBy(
            WallpaperAbyssMethod method,
            int?id,
            int?width  = null,
            int?height = null,
            WallpaperAbyssOperator @operator = WallpaperAbyssOperator.equal
            )
        {
            var arguments = new WallpaperAbyssArgumentsBuilder()
            {
                Auth     = _auth,
                Method   = method,
                ID       = id,
                Width    = width,
                Height   = height,
                Operator = @operator
            };

            var result = await GeneralSearchAsync(arguments);

            return(result.ResponseObject.Count);
        }
 /// <summary>
 /// Returns the URI used to query Abyss Wallpapers API.
 /// </summary>
 /// <param name="arguments"></param>
 /// <returns></returns>
 public Uri BuildQueryUri(WallpaperAbyssArgumentsBuilder arguments)
 {
     return(BuildQueryUri(UriImageSearch, arguments));
 }
        /// <summary>
        /// Returns the URI used to query Abyss Wallpapers API.
        /// </summary>
        /// <param name="baseUri"></param>
        /// <param name="arguments"></param>
        /// <returns></returns>
        public Uri BuildQueryUri(Uri baseUri, WallpaperAbyssArgumentsBuilder arguments)
        {
            var query = UrlHelper.ToQueryString(arguments);

            return(new Uri($"{baseUri}{query}"));
        }