/// <summary> /// 条目搜索 /// </summary> /// <param name="client"></param> /// <param name="keywords">关键词</param> /// <param name="start">开始条数</param> /// <param name="maxResults">每页条数</param> /// <param name="type">类型</param> /// <param name="responseGroup">返回数据大小</param> /// <param name="cancellationToken"></param> /// <returns></returns> public static async Task <SearchResult> SearchAsync(this IBangumiClient client, string keywords, int start, int maxResults, SubjectType?type = null, ResponseGroup responseGroup = ResponseGroup.Small, CancellationToken cancellationToken = default(CancellationToken)) { if (client == null) { throw new ArgumentNullException(nameof(client)); } var url = $"/search/subject/{WebUtility.UrlEncode(keywords)}?"; if (type.HasValue) { url += $"type={(int)type}"; } url += $"&responseGroup={responseGroup.GetValue()}&start={start}&max_results={maxResults}"; var result = await client.GetAsync <SearchResult>(url, cancellationToken); if (result.ErrorCode == (int)HttpStatusCode.NotFound) { result = new SearchResult { List = Array.Empty <Subject>() }; } return(result); }
/// <summary> /// 获取用户收藏列表 /// </summary> /// <param name="client"></param> /// <param name="uid">UID</param> /// <param name="cat">收藏类型</param> /// <param name="ids">收藏条目 ID</param> /// <param name="responseGroup"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public static Task <CollectionSubject[]> GetUserCollectionAsync( this IBangumiClient client, long uid, CollectionType cat, int[] ids = null, ResponseGroup responseGroup = ResponseGroup.Medium, CancellationToken cancellationToken = default(CancellationToken)) { if (client == null) { throw new ArgumentNullException(nameof(client)); } if (responseGroup == ResponseGroup.Large) { throw new NotSupportedException(); } var url = $"/user/{uid}/collection?cat={cat.GetValue()}"; if (ids != null) { url += $"&ids={string.Join(",", ids)}"; } url += $"&responseGroup={responseGroup.GetValue()}"; return(client.GetAsync <CollectionSubject[]>(url, cancellationToken)); }
/// <summary> /// 获取条目信息 /// </summary> /// <param name="client"></param> /// <param name="id">条目 ID</param> /// <param name="responseGroup">返回数据大小</param> /// <param name="cancellationToken"></param> /// <returns></returns> public static Task <Subject> GetSubjectAsync(this IBangumiClient client, int id, ResponseGroup responseGroup = ResponseGroup.Small, CancellationToken cancellationToken = default(CancellationToken)) { if (client == null) { throw new ArgumentNullException(nameof(client)); } var url = $"/subject/{id}?responseGroup={responseGroup.GetValue()}"; return(client.GetAsync <Subject>(url, cancellationToken)); }