2013/04/30

[C#]Twitterizerでブロックしているか調べる、とか

,
 Twitterizerであるユーザーをブロックしているかどうか調べる、だけの話です(完全に覚書です)。

 コードはこんな感じになります。
private void blockToolStripMenuItem_Click(object sender, EventArgs e)
{
    //ブロックしているかどうか調べる
    const string screenName = "***********";
    var resp = TwitterBlock.Exists(token, screenName);
    if (resp.Result == RequestResult.Success)
    {
        //ブロックしている
        MessageBox.Show("yes");
    }
    else
    {
        //ブロックしていない
        MessageBox.Show("no");
    }
}

 TwitterResponse<TwitterUser>型で返ってきますが、ブロックしているかどうか、はTwitterResponse.ResultがSucceedならブロックしている/それ以外ならブロックしていない。となるみたいです。TwitterResponseにはRequestURLメンバがありますが、デバッグで見る限りは"http://api.twitter.com/1/blocks/exists.json?screen_name=[screenname]&include_entities=true"を取得してるみたいです。
 respにはTwitterUser型のUserメンバもあり、[screenName]さんのUser情報がそのまんま入ってました。

 ブロックしていない相手の場合、resp.ResultはFileNotFound、Contentは"{\"errors\":[{\"message\":\"Sorry, that page does not exist\",\"code\":34}]}"が返ってきてました。
ブロックしていないとき
で、ブロックしているユーザー一覧も取得できるはずなんですけど、次のコードだと何も返ってきません…

private async void ブロック一覧ToolStripMenuItem_Click(object sender, EventArgs e)
{
    var dialog = new ShowUsersDialog();
    dialog.Text = "ブロックしているユーザー一覧:";
    dialog.Show();
            
    var options = new BlockingOptions();

    await Task.Run(() =>
    {
        //ブロックしているユーザーのIDを取得する。
        //TwitterBlock.Blockingだとエラーが返ってくる
        var ids = TwitterBlock.BlockingIds(token);
        if (ids.Result == RequestResult.Success)
        {
            foreach (var u in ids.ResponseObject)
            {
                dialog.richTextBox1.Text += u + "\n";
            }
        }
        else
        {
            //取得出来ませんでした
            MessageBox.Show(ids.Result.ToString());
        }
                 
    });

}
実装されてない、とかなんですかね?OAuthとかjsonとかその辺りをC#で自分で処理できるようになりたいですね…

0 コメント to “[C#]Twitterizerでブロックしているか調べる、とか”

コメントを投稿