Class: Twimock::API::OAuth::RequestToken

Inherits:
Twimock::API::OAuth show all
Defined in:
lib/twimock/api/oauth/request_token.rb

Constant Summary collapse

METHOD =
"POST"
PATH =
"/oauth/request_token"
AUTHORIZATION_REGEXP =
/OAuth oauth_callback=\"(.*)\", oauth_consumer_key=\"(.*)\", oauth_nonce=\"(.*)\", oauth_signature=\"(.*)\", oauth_signature_method=\"(.*)\", oauth_timestamp=\"(.*)\", oauth_version=\"(.*)\".*/

Instance Method Summary collapse

Methods inherited from Twimock::API::OAuth

#initialize

Constructor Details

This class inherits a constructor from Twimock::API::OAuth

Instance Method Details

#call(env) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/twimock/api/oauth/request_token.rb', line 14

def call(env)
  return super unless called?(env)
  begin
    authorization_header = env["authorization"] || env["HTTP_AUTHORIZATION"]
    oauth = parse_authorization_header(authorization_header)
    consumer_key = oauth.consumer_key

    raise Twimock::Errors::InvalidConsumerKey.new if !validate_consumer_key(consumer_key)
    application = Twimock::Application.find_by_api_key(consumer_key)
  rescue Twimock::Errors::InvalidConsumerKey => @error
    return unauthorized
  rescue => @error
    return internal_server_error
  end

  request_token = create_request_token(application.id)
  status = "200 OK"
  params = { oauth_token:              request_token.string,
             oauth_token_secret:       request_token.secret,
             oauth_callback_confirmed: true }
  body   = params.inject([]){|a, (k, v)| a << "#{k}=#{v}"}.join('&')
  header = { "Content-Length" => body.bytesize.to_s }
  [ status, header, [ body ] ]
end