空談録

http://artfulplace.net/blogs/ からひっこしつつ

Twitter APIのstatuses/unretweetって何?

新年初の記事ですね!(違う)
だって書くことないし…

Twitter APIにstatuses/unretweetとかいうのが追加されてたみたいですね
これですね
dev.twitter.com

ひとまず読んだ限り「ツイートをRTしたのを削除する」って意味かなーと思うのですがよくわかりません
そもそもみなさんご存知の通り"statuses/destroy"君で今までも同じようなことができたはずです。とはいえ同じ機能なら今更新参者を呼ぶ意味が分かりませんね
残念なことに私は英語がまともに読めなかったので実験してみました

statuses/destroyと比較してみよう

というわけでこちらで勝手に実験してその結果をご報告だけしましょう。TLに複数回流していたのは申し訳ないです

(以下の文はTwitter API触ってる人という前提です)

まず基となるツイートを"A"とします
次にユーザーxがAをRTしたツイートを"B"とします
さらに別のユーザーyがAをRTしたツイートを"C"とします

ここでA,B,CそれぞれのステータスIDを{A},{B},{C}と表現することにします

さてユーザーxがBを消すためには従来の"statuses/destroy"であれば次のようにする必要がありました
・POST statuses/destroy/{B}.json -> 200 OK

当然ですがこのとき次のリクエストはForbiddenとなります
・POST statuses/destroy/{A}.json -> 403 Forbidden
・POST statuses/destroy/{C}.json -> 403 Forbidden

ここまでは従来の話です。続いてstatuses/unretweetを使いましょう
statuses/unretweetはstatuses/destroyと違って「元のツイートのID、またはそのツイートのRTのいかなるID」であっても自分のRTを消すことができます
つまり
・POST statuses/unretweet/{B}.json -> 200 OK
・POST statuses/unretweet/{A}.json -> 200 OK
・POST statuses/unretweet/{C}.json -> 200 OK
となります。今回であればユーザーxがBを消すのにA,B,CどのIDを使っても消すことができます。

当然これはそれ以降のRTとしてD,Eが存在しても同様です。なので「自分の行ったRTのツイートを探して消すのが面倒くさい」みたいなのは解消しますね

どうでもいいメモ

もし指定したIDのツイートをRTしていない場合どうなるかというと200が帰ってきます。なぞだ
中身はその指定したIDのツイートのjsonです
新しいstatuses/showの形か!?!?!?


以上です。ちゃんと試してません。違ったら申し訳なく

もうちょっとブログを書く機会を増やしたい…ネタがない…

この辺で