speg03の雑記帳

主に未来の自分のために試したことなどを記録しています

OAuth仲介用のWebサーバ

Twitterクライアントのために作っていたのだけど、何となくTwitterに依存しないようにしてみた。

ソースコード

key.yml

Twitterじゃなければsiteを適切に変更。

site: http://twitter.com
consumer_key: CONSUMER_KEY
consumer_secret: CONSUMER_SECRET
access_token: ACCESS_TOKEN
access_token_secret: ACCESS_TOKEN_SECRET
app.rb
#!/usr/bin/env ruby

require 'yaml'

require 'rubygems'
require 'oauth'
require 'sinatra'

set :port, 10080

key = YAML::load_file('key.yml')
consumer = OAuth::Consumer.new(
  key['consumer_key'],
  key['consumer_secret'],
  :site => key['site']
)
access_token = OAuth::AccessToken.new(
  consumer,
  key['access_token'],
  key['access_token_secret']
)

get '/' do
  redirect '/index.html'
end

get '/*' do
  access_token.get(
    "#{key['site']}#{request.path}?#{request.query_string}"
  ).body
end

post '/*' do
  access_token.post(
    "#{key['site']}#{request.path}",
    params
  ).body
end

実行

http://HOSTNAME:10080/ に向かってAPIのパスを投げるといい。Twitterのフレンドタイムラインだと http://HOSTNAME:10080/statuses/friends_timeline.json とかね。