예제 #1
0
        //マイリストを編集
        public async Task <bool> UpdateMylistAsync(NicoNicoMylistGroupEntry group, string token)
        {
            try {
                Owner.Status = "マイリスト情報を更新中";

                var pair = new Dictionary <string, string>();
                pair["group_id"]     = group.Id;
                pair["name"]         = group.Name;
                pair["default_sort"] = "1";
                pair["description"]  = group.Description;
                pair["token"]        = token;

                var request = new HttpRequestMessage(HttpMethod.Post, MylistGroupUpdateApi);
                request.Content = new FormUrlEncodedContent(pair);

                var a = await App.ViewModelRoot.CurrentUser.Session.GetAsync(request);

                dynamic json = DynamicJson.Parse(a);
                if (json.status == "ok")
                {
                    Owner.Status = "マイリスト情報を更新しました";
                    return(true);
                }
                else
                {
                    Owner.Status = "マイリストの更新に失敗しました";
                    return(false);
                }
            } catch (RequestFailed) {
                Owner.Status = "マイリストの更新に失敗しました";
                return(false);
            }
        }
예제 #2
0
        //マイリスト一覧を取得
        public async Task <List <NicoNicoMylistGroupEntry> > GetMylistGroupAsync()
        {
            try {
                var a = await App.ViewModelRoot.CurrentUser.Session.GetAsync(MylistGroupApi);

                dynamic json = DynamicJson.Parse(a);

                var ret = new List <NicoNicoMylistGroupEntry>();

                foreach (var entry in json.mylistgroup)
                {
                    var data = new NicoNicoMylistGroupEntry();

                    data.CreateTime  = UnixTime.FromUnixTime((long)entry.create_time).ToString();
                    data.Description = data.DescriptionOriginal = HttpUtility.HtmlDecode(entry.description);
                    data.Id          = entry.id;
                    data.Name        = data.NameOriginal = HttpUtility.HtmlDecode(entry.name);
                    data.IsPublic    = entry.@public != "0";
                    data.SortOrder   = int.Parse(entry.sort_order);

                    ret.Add(data);
                }
                return(ret);
            } catch (RequestFailed) {
                Owner.Status = "マイリストグループの取得に失敗しました";
                return(null);
            }
        }
예제 #3
0
        //マイリストを取得
        public async Task <List <NicoNicoMylistEntry> > GetMylistAsync(NicoNicoMylistGroupEntry group)
        {
            try {
                Owner.Status = "マイリスト " + group.Name + " 取得中";

                var a = await App.ViewModelRoot.CurrentUser.Session.GetAsync(MylistGetApi + "?group_id=" + group.Id);

                var ret = new List <NicoNicoMylistEntry>();
                StoreItems(a, ret);

                Owner.Status = "";
                return(ret);
            } catch (RequestFailed) {
                Owner.Status = "マイリストの取得に失敗しました";
                return(null);
            }
        }
예제 #4
0
        //マイリストに追加
        public async Task <bool> AddMylistAsync(NicoNicoMylistGroupEntry group, string cmsid, string desc, string token)
        {
            try {
                var pair = new Dictionary <string, string> {
                    ["group_id"]    = group.Id,
                    ["item_id"]     = cmsid,
                    ["description"] = desc,
                    ["token"]       = token
                };
                var request = new HttpRequestMessage(HttpMethod.Post, MylistAddApi);
                request.Content = new FormUrlEncodedContent(pair);

                var a = await App.ViewModelRoot.CurrentUser.Session.GetAsync(request);

                var json = DynamicJson.Parse(a);

                if (json.error())
                {
                    if (json.error.code == "EXIST")
                    {
                        Owner.Status = "既に登録済みです";
                        return(false);
                    }
                }
                if (json.status())
                {
                    if (json.status == "ok")
                    {
                        Owner.Status = group.Name + " に登録しました";
                        return(true);
                    }
                }

                Owner.Status = "登録に失敗しました";
                return(false);
            } catch (RequestFailed) {
                Owner.Status = "登録に失敗しました";
                return(false);
            }
        }
예제 #5
0
        //マイリスト移動
        public async Task <bool> MoveMylistAsync(IEnumerable <MylistResultEntryViewModel> source, NicoNicoMylistGroupEntry target, string token)
        {
            try {
                Owner.Status = "マイリスト移動中";

                var form = new Dictionary <string, string>();
                form["group_id"]        = source.First().Owner.Group.Id;
                form["target_group_id"] = target.Id;
                form["token"]           = token;

                //Dictionaryをテキストに変換
                var text = await new FormUrlEncodedContent(form).ReadAsStringAsync();
                text += MakeIdList(source);

                var request = new HttpRequestMessage(HttpMethod.Post, MylistMoveApi);

                //とりあえずマイリストだったらApiが変わってくる
                if (source.First().Owner.IsDefList)
                {
                    request.RequestUri = new Uri(DefListMoveApi);
                }

                //Dictionaryで扱えないのでrawなstringで渡す
                request.Content = new StringContent(text);
                request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");

                var a = await App.ViewModelRoot.CurrentUser.Session.GetAsync(request);

                dynamic json = DynamicJson.Parse(a);
                if (json.status == "ok")
                {
                    Owner.Status = "マイリストを移動しました";
                    return(true);
                }
                else
                {
                    Owner.Status = "マイリストの移動に失敗しました";
                    return(false);
                }
            } catch (RequestFailed) {
                Owner.Status = "マイリストの移動に失敗しました";
                return(false);
            }
        }
예제 #6
0
        //マイリストコメントを更新
        public async Task <bool> UpdateDescriptionAsync(NicoNicoMylistGroupEntry group, NicoNicoMylistEntry entry, string token)
        {
            try {
                Owner.Status = "マイリストコメント更新中";

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

                //とりあえずマイリストはgroupがnullなので
                if (group != null)
                {
                    pair["group_id"] = group.Id;
                }

                pair["item_id"]     = entry.ItemId;
                pair["description"] = entry.Description;
                pair["token"]       = token;

                //マイリストタイプによって変わる
                if (entry is NicoNicoMylistVideoEntry)
                {
                    pair["item_type"] = "0";
                }
                else if (entry is NicoNicoMylistMangaEntry)
                {
                    pair["item_type"] = "5";
                }
                else if (entry is NicoNicoMylistBookEntry)
                {
                    pair["item_type"] = "6";
                }
                else if (entry is NicoNicoMylistArticleEntry)
                {
                    pair["item_type"] = "13";
                }

                var request = new HttpRequestMessage(HttpMethod.Post, MylistUpdateApi);

                if (group == null)
                {
                    request.RequestUri = new Uri(DefListUpdateApi);
                }

                request.Content = new FormUrlEncodedContent(pair);

                var a = await App.ViewModelRoot.CurrentUser.Session.GetAsync(request);

                dynamic json = DynamicJson.Parse(a);
                if (json.status == "ok")
                {
                    Owner.Status = "マイリストコメントを更新しました";
                    return(true);
                }
                else
                {
                    Owner.Status = "マイリストコメントの更新に失敗しました";
                    return(false);
                }
            } catch (RequestFailed) {
                Owner.Status = "マイリストコメントの更新に失敗しました";
                return(false);
            }
        }