コード例 #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 <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));
                }
            }
        }