/// <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); }
/// <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)); }
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}")); }