From 13596bc60db36ecaf5a1df09ecb322d85d8c2922 Mon Sep 17 00:00:00 2001 From: Erik Michaels-Ober Date: Thu, 13 Jun 2013 06:46:16 -0700 Subject: [PATCH] Allow use of Twitter::Token in place of bearer token string --- lib/twitter/api/oauth.rb | 3 ++- lib/twitter/client.rb | 8 ++++++-- spec/twitter/api/oauth_spec.rb | 7 +++++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/lib/twitter/api/oauth.rb b/lib/twitter/api/oauth.rb index b412178b6..d9a7c2a76 100644 --- a/lib/twitter/api/oauth.rb +++ b/lib/twitter/api/oauth.rb @@ -31,11 +31,12 @@ def token # @rate_limited No # @authentication Required # @raise [Twitter::Error::Unauthorized] Error raised when supplied user credentials are not valid. - # @param access_token [String] The value of the bearer token to revoke. + # @param access_token [String, Twitter::Token] The bearer token to revoke. # @return [Twitter::Token] The invalidated token. token_type should be nil. # @example Revoke a token # Twitter.invalidate_token("AAAA%2FAAA%3DAAAAAAAA") def invalidate_token(access_token) + access_token = access_token.access_token if access_token.is_a?(Twitter::Token) object_from_response(Twitter::Token, :post, "/oauth2/invalidate_token", :access_token => access_token) end end diff --git a/lib/twitter/client.rb b/lib/twitter/client.rb index 2dbd9c03e..ffb547810 100644 --- a/lib/twitter/client.rb +++ b/lib/twitter/client.rb @@ -93,7 +93,7 @@ def request_setup(method, path, params, signature_params) request.headers[:accept] = '*/*' # It is important we set this, otherwise we get an error. elsif params.delete(:app_auth) || !user_token? unless bearer_token? - @bearer_token = token[:access_token] + @bearer_token = token Twitter.client.bearer_token = @bearer_token if Twitter.client? end request.headers[:authorization] = bearer_auth_header @@ -132,7 +132,11 @@ def encode_value(value) end def bearer_auth_header - "Bearer #{@bearer_token}" + if @bearer_token.is_a?(Twitter::Token) && @bearer_token.token_type == "bearer" + "Bearer #{@bearer_token.access_token}" + else + "Bearer #{@bearer_token}" + end end def oauth_auth_header(method, path, params={}) diff --git a/spec/twitter/api/oauth_spec.rb b/spec/twitter/api/oauth_spec.rb index 3e7b12101..1a1ee4082 100644 --- a/spec/twitter/api/oauth_spec.rb +++ b/spec/twitter/api/oauth_spec.rb @@ -44,6 +44,13 @@ expect(token.access_token).to eq "AAAA%2FAAA%3DAAAAAAAA" expect(token.token_type).to eq nil end + context "with a token" do + it "requests the correct resource" do + token = Twitter::Token.new(:access_token => "AAAA%2FAAA%3DAAAAAAAA") + @client.invalidate_token(token) + expect(a_post("/oauth2/invalidate_token").with(:body => {:access_token => "AAAA%2FAAA%3DAAAAAAAA"})).to have_been_made + end + end end end