TwitterAPIをActiveResourceで

吉見和也(Kazuya Yoshimi) 2008-02-18 19:39:24

じゃあ今回はActiveResourceでもやってみようかな。とは言っても僕も使ったことないので調べながらヨチヨチと

そもそもActiveResourceってなに?

READMEを和訳されてる方がいらっしゃったので拝読

Active ResourceのREADMEを翻訳してみました

なるほど、リモートにあるRESTリソースにマッピングね。

うん、よくわかんない

要は、RESTfulなAPIをActiveResourceで簡単に扱えますよ、ってことっぽい

まぁ、考えるより体で覚えろっていうじゃない。

とにかくやってみる

RESTfulなwebapiを提供しているサービスといえば、やっぱりtwitterが有名かな。toytterはtwitterもどきなわけだし、toytterで発言したら、twitterにも一緒に発言するようにしちゃおう

twitterの投稿APIも日本語訳を参考に

Twitter API 仕様書 (勝手に日本語訳シリーズ)

認証はベーシック認証らしいので、投稿用のAPIは次の様になる

http://(id):(pass)@twitter.com/statuses/update.(json|xml)

それに対応したActiveResourceなTwitterクラスはこんな感じ


class Twitter < ActiveResource::Base

  USER = "hoge"

  PASS = "pass"

  self.site = "http://#{USER}:#{PASS}@twitter.com"

  class Status < Twitter

  end

end

ActiveResource::Baseを継承させて、APIのURLをself.siteに入れる。statusesは対象のリソース名?なので、ここで設定するurlは/statusesは入れない。

その代わりに、Twitter::Statusクラスを定義してあげればいい。

script/consoleから


> Twitter::Status.post(:update, :status => "activeresource test")

ってやるだけで、Twitterに投稿できる。

これをtoytterでの投稿時に呼ぶようにする。このままじゃ全てのtoytterユーザーが一つのtwitterアカウントで投稿することになるけど、そこはご愛嬌

toytterのuser_controller.rbのupdateメソッドのところに入れる


  def update

    Status.create :user_id => current_user.id,

      :desc => params[:desc]

    Twitter::Status.post(:update, :status => params[:desc])

    redirect_to "/"

  end

これでtoytter内で発言すると、twitterにも同じ内容が投稿されるようになりました。

超簡単

押忍

※このエントリはZDNetブロガーにより投稿されたものです。朝日インタラクティブ および ZDNet編集部の見解・意向を示すものではありません。

SpecialPR