module MikuTwitter::AuthenticationFailedAction

OAuthに失敗した時の処理

Public Class Methods

get() click to toggle source

register_authentication_faileded_action で登録されたProcを返す。 何も登録されていない時は、abortするProcを返す。

Return

登録されたProcオブジェクト

# File core/lib/mikutwitter/authentication_failed_action.rb, line 30
def get
  @authentication_failed_action ||= lambda{ |t, m, u, o, r| warn((JSON.parse(r.body)["error"] rescue 'OAuth error')); abort } end
lock() click to toggle source
# File core/lib/mikutwitter/authentication_failed_action.rb, line 33
def lock
  @lock ||= Mutex.new end
regist(&callback)
Alias for: register
register(&callback) click to toggle source

Twitterから401が帰ってきた時に、OAuthトークンを取得するためのブロック &callback を登録する。

Args

&callback(twitter, method, url, options, res)

Twitter のOAuth トークンが切れた時に呼び出される。以下の引数を取る。

twitter

401が返されたリクエストを発行したMikuTwitterのインスタンス

method

HTTPメソッド。:get, :post, :put, :delete のいずれか

url

APIのURL

options

APIの引数

res

API問い合わせの結果(Net::HTTPResponse)

Return

登録したProcオブジェクト

# File core/lib/mikutwitter/authentication_failed_action.rb, line 20
def register(&callback)
  @authentication_failed_action = callback end
Also aliased as: regist

Public Instance Methods

authentication_failed_action(method, url, options, res) click to toggle source

OAuthトークンを最取得するためのブロックを呼び出す。

Args

method

HTTPメソッド。:get, :post, :put, :delete のいずれか

url

APIのURL

options

APIの引数

res

API問い合わせの結果(Net::HTTPResponse)

# File core/lib/mikutwitter/authentication_failed_action.rb, line 43
def authentication_failed_action(method, url, options, res)
  failed_token, failed_secret = self.a_token, self.a_secret
  MikuTwitter::AuthenticationFailedAction.lock.synchronize{
    if failed_token == self.a_token and failed_secret == self.a_secret
      result = MikuTwitter::AuthenticationFailedAction.get.call(self, method, url, options, res)
      if(result and 2 == result.size)
        self.a_token, self.a_secret = *result
        UserConfig[:twitter_token] = self.a_token
        UserConfig[:twitter_secret] = self.a_secret
        return *result end
    else
      return self.a_token, self.a_secret end } end