コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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));
        }
コード例 #3
0
        /// <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));
        }