コード例 #1
0
        public async Task Update(int[] epId, EpStatus status)
        {
            if (epId == null)
            {
                throw new ArgumentNullException(nameof(epId));
            }
            if (epId.Length <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(status));
            }
            if (!Enum.IsDefined(typeof(EpStatus), status))
            {
                throw new ArgumentOutOfRangeException(nameof(status));
            }

            var url = $"/ep/{epId.Last()}/status/{status.ToString().ToLowerInvariant()}";

            using (var client = new BangumiClient(_oauthProvider))
            {
                using (var postContent = new FormUrlEncodedContent(Enumerable.Empty <KeyValuePair <string, string> >()))
                {
                    await client.PostAsync(url, postContent);
                }
            }
        }
コード例 #2
0
        public async Task <Calendar[]> GetAsync()
        {
            using (var client = new BangumiClient())
            {
                var json = await client.GetStringAsync("/calendar");

                return(JsonConvert.DeserializeObject <Calendar[]>(json));
            }
        }
コード例 #3
0
        /// <summary>
        /// 用户基础信息
        /// </summary>
        /// <param name="uid">UID</param>
        /// <returns></returns>
        public async Task <User> Get(int uid)
        {
            var url = $"/user/{uid}";

            using (var client = new BangumiClient())
            {
                var json = await client.GetStringAsync(url);

                return(JsonConvert.DeserializeObject <User>(json));
            }
        }
コード例 #4
0
        public async Task <SubjectCollectionInfo> GetSubjectCollectionInfo(int subjectId)
        {
            var url = $"/collection/{subjectId}";

            using (var client = new BangumiClient(_oauthProvider))
            {
                var json = await client.GetStringAsync(url);

                return(JsonConvert.DeserializeObject <SubjectCollectionInfo>(json));
            }
        }
コード例 #5
0
        public async Task <Subject> GetEps(int subjectId)
        {
            var url = $"/subject/{subjectId}/ep";

            using (var client = new BangumiClient())
            {
                var json = await client.GetStringAsync(url);

                return(JsonConvert.DeserializeObject <Subject>(json));
            }
        }
コード例 #6
0
        /// <summary>
        /// 用户收视进度
        /// </summary>
        /// <param name="uid">UID</param>
        /// <param name="subjectId">条目 ID</param>
        /// <returns></returns>
        public async Task <Progress[]> GetProgress(int uid, int?subjectId = null)
        {
            var url = $"/user/{uid}/progress";

            if (subjectId.HasValue)
            {
                url += $"?subject_id={subjectId}";
            }
            using (var client = new BangumiClient(_oauthProvider))
            {
                var json = await client.GetStringAsync(url);

                return(JsonConvert.DeserializeObject <Progress[]>(json));
            }
        }
コード例 #7
0
        /// <summary>
        /// 用户基础信息
        /// </summary>
        /// <param name="username">用户名</param>
        /// <returns></returns>
        public async Task <User> Get(string username)
        {
            if (username == null)
            {
                throw new ArgumentNullException(nameof(username));
            }

            var url = $"/user/{WebUtility.UrlEncode(username)}";

            using (var client = new BangumiClient())
            {
                var json = await client.GetStringAsync(url);

                return(JsonConvert.DeserializeObject <User>(json));
            }
        }
コード例 #8
0
        public async Task <Subject> Get(int id, ResponseGroup responseGroup = ResponseGroup.Small)
        {
            if (!Enum.IsDefined(typeof(ResponseGroup), responseGroup))
            {
                throw new ArgumentOutOfRangeException(nameof(responseGroup));
            }

            var url = $"/subject/{id}?responseGroup={responseGroup.ToString().ToLowerInvariant()}";

            using (var client = new BangumiClient())
            {
                var json = await client.GetStringAsync(url);

                return(JsonConvert.DeserializeObject <Subject>(json));
            }
        }
コード例 #9
0
        public async Task <UserCollection[]> GetCollection(int uid, CollectionCategory category, ResponseGroup responseGroup = ResponseGroup.Medium)
        {
            if (!Enum.IsDefined(typeof(CollectionCategory), category))
            {
                throw new ArgumentOutOfRangeException(nameof(category));
            }
            if (!Enum.IsDefined(typeof(ResponseGroup), responseGroup))
            {
                throw new ArgumentOutOfRangeException(nameof(responseGroup));
            }

            var url = $"/user/{uid}/collection?cat={(category == CollectionCategory.Watching ? "watching" : "all_watching")}&responseGroup={responseGroup.ToString().ToLowerInvariant()}";

            using (var client = new BangumiClient())
            {
                var json = await client.GetStringAsync(url);

                return(JsonConvert.DeserializeObject <UserCollection[]>(json));
            }
        }
コード例 #10
0
        /// <summary>
        /// 用户收视进度
        /// </summary>
        /// <param name="username">用户名</param>
        /// <param name="subjectId">条目 ID</param>
        /// <returns></returns>
        public async Task <Progress[]> GetProgress(string username, int?subjectId = null)
        {
            if (username == null)
            {
                throw new ArgumentNullException(nameof(username));
            }

            var url = $"/user/{WebUtility.UrlEncode(username)}/progress";

            if (subjectId.HasValue)
            {
                url += $"?subject_id={subjectId}";
            }
            using (var client = new BangumiClient(_oauthProvider))
            {
                var json = await client.GetStringAsync(url);

                return(JsonConvert.DeserializeObject <Progress[]>(json));
            }
        }
コード例 #11
0
        public async Task <ListResult <Subject> > Search(string keywords, SubjectType?type = null, ResponseGroup responseGroup = ResponseGroup.Small, int start = 0, int maxResults = 10)
        {
            if (keywords == null)
            {
                throw new ArgumentNullException(nameof(keywords));
            }
            if (start < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(start));
            }
            if (maxResults <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(maxResults));
            }

            var url   = $"/search/subject/{WebUtility.UrlEncode(keywords)}";
            var query = new Dictionary <string, string>();

            if (type.HasValue)
            {
                query["type"] = ((int)type.Value).ToString();
            }
            query["responseGroup"] = responseGroup.ToString().ToLowerInvariant();
            query["start"]         = start.ToString();
            query["max_results"]   = maxResults.ToString();
            if (query.Count > 0)
            {
                url += "?" + string.Join("&", query.Select(temp => temp.Key + "=" + WebUtility.UrlEncode(temp.Value)));
            }
            using (var client = new BangumiClient())
            {
                var json = await client.GetStringAsync(url);

                return(JsonConvert.DeserializeObject <ListResult <Subject> >(json));
            }
        }
コード例 #12
0
        public async Task <SubjectCollectionInfo> UpdateSubjectCollection(int subjectId, CollectionStatus status, string comment = null, string[] tags = null, int?rating = null, bool?isPrivate = null)
        {
            if (!Enum.IsDefined(typeof(CollectionStatus), status))
            {
                throw new ArgumentOutOfRangeException(nameof(status));
            }
            if (rating.HasValue && (rating.Value < 0 || rating.Value > 10))
            {
                throw new ArgumentOutOfRangeException(nameof(rating));
            }

            var postData = new Dictionary <string, string>();

            switch (status)
            {
            case CollectionStatus.Wish:
                postData["status"] = "wish";
                break;

            case CollectionStatus.Collect:
                postData["status"] = "collect";
                break;

            case CollectionStatus.Do:
                postData["status"] = "do";
                break;

            case CollectionStatus.OnHold:
                postData["status"] = "on_hold";
                break;

            case CollectionStatus.Dropped:
                postData["status"] = "dropped";
                break;
            }
            if (comment != null)
            {
                postData["comment"] = comment;
            }
            if (tags?.Any() == true)
            {
                postData["tags"] = string.Join(" ", tags);
            }
            if (rating.HasValue)
            {
                postData["rating"] = rating.Value.ToString();
            }
            if (isPrivate.HasValue)
            {
                postData["privacy"] = isPrivate.Value ? "1" : "0";
            }

            var url = $"/collection/{subjectId}/update";

            using (var client = new BangumiClient(_oauthProvider))
            {
                using (var postContent = new FormUrlEncodedContent(postData))
                {
                    var response = await client.PostAsync(url, postContent);

                    var json = await response.Content.ReadAsStringAsync();

                    return(JsonConvert.DeserializeObject <SubjectCollectionInfo>(json));
                }
            }
        }