ActiveResourceを使ってTwitterに投稿する

RESTの恐ろしさを味わうがいい!(いまさら)

class Twitter < ActiveResource::Base
  self.site = "http://www.twitter.com/"
  self.logger = Logger.new($stdout)

  class Status < Twitter
    def self.comment(user, pass, msg)
      self.user = user
      self.password = pass
      self.post(:update, :status => msg)
    end
  end
end

script/consoleから

>> Twitter::Status.comment(<username>, <password>, "thisistest")
POST http://www.twitter.com:80/statuses/update.xml?status=thisistest
--> 200 OK (892b 0.50s)
=> #<Net::HTTPOK 200 OK readbody=true>

Basic認証する場合、よく下記のように書いてあるサンプルを見かけるけど、これだとそれぞれのユーザごとに処理をさせられない。

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

ActiveResourceのソースを見たら「user=」や「password=」メソッドがあったりするので、普通にユーザ・パスワード指定して認証できるねってことらしい。

>> Twitter.user="username"
>> Twitter.password="password"
>> Twitter::Status.post(:update, :status => "thisistest")
POST http://www.twitter.com:80/statuses/update.xml?status=thisistest
--> 200 OK (892b 0.50s)
=> #<Net::HTTPOK 200 OK readbody=true>

もちろんこれもOK.