//マイリストを編集 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); } }
//マイリスト一覧を取得 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); } }
//マイリストを取得 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); } }
//マイリストに追加 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); } }
//マイリスト移動 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); } }
//マイリストコメントを更新 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); } }