class Twurl::AppOnlyOAuthClient

Constants

AUTHORIZATION_FAILED_MESSAGE

Attributes

bearer_token[R]
consumer_key[R]
consumer_secret[R]

Public Class Methods

new(options = {}) click to toggle source
   # File lib/twurl/app_only_oauth_client.rb
11 def initialize(options = {})
12   @consumer_key    = options['consumer_key']
13   @consumer_secret = options['consumer_secret']
14   @bearer_token    = options['bearer_token']
15 end

Public Instance Methods

exchange_credentials_for_access_token() click to toggle source
   # File lib/twurl/app_only_oauth_client.rb
21 def exchange_credentials_for_access_token
22   response = fetch_oauth2_token
23   if response.nil? || response[:access_token].nil?
24     raise Exception, AUTHORIZATION_FAILED_MESSAGE
25   end
26   @bearer_token = response[:access_token]
27 end
fetch_oauth2_token() click to toggle source
   # File lib/twurl/app_only_oauth_client.rb
69 def fetch_oauth2_token
70   request = Net::HTTP::Post.new('/oauth2/token')
71   request.body = URI.encode_www_form(request_data)
72   request['user-agent'] = user_agent
73   request['authorization'] = "Basic #{Base64.strict_encode64("#{consumer_key}:#{consumer_secret}")}"
74   response = http_client.request(request).body
75   JSON.parse(response,:symbolize_names => true)
76 end
http_client() click to toggle source
   # File lib/twurl/app_only_oauth_client.rb
45 def http_client
46   uri = URI.parse(Twurl.options.base_url)
47   http = if Twurl.options.proxy
48     proxy_uri = URI.parse(Twurl.options.proxy)
49     Net::HTTP.new(uri.host, uri.port, proxy_uri.host, proxy_uri.port)
50   else
51     Net::HTTP.new(uri.host, uri.port)
52   end
53   set_http_client_options(http)
54 end
needs_to_authorize?() click to toggle source
   # File lib/twurl/app_only_oauth_client.rb
37 def needs_to_authorize?
38   bearer_token.nil?
39 end
perform_request_from_options(options, &block) click to toggle source
   # File lib/twurl/app_only_oauth_client.rb
29 def perform_request_from_options(options, &block)
30   request = build_request_from_options(options)
31   request['user-agent'] = user_agent
32   request['authorization'] = "Bearer #{bearer_token}"
33 
34   http_client.request(request, &block)
35 end
request_data() click to toggle source
   # File lib/twurl/app_only_oauth_client.rb
41 def request_data
42   {'grant_type' => 'client_credentials'}
43 end
save() click to toggle source
   # File lib/twurl/app_only_oauth_client.rb
17 def save
18   self.class.rcfile.bearer_token(consumer_key, bearer_token)
19 end
set_http_client_options(http) click to toggle source
   # File lib/twurl/app_only_oauth_client.rb
56 def set_http_client_options(http)
57   http.set_debug_output(Twurl.options.debug_output_io) if Twurl.options.trace
58   http.read_timeout = http.open_timeout = Twurl.options.timeout || 60
59   http.open_timeout = Twurl.options.connection_timeout if Twurl.options.connection_timeout
60   # Only override if Net::HTTP support max_retries (since Ruby >= 2.5)
61   http.max_retries = 0 if http.respond_to?(:max_retries=)
62   if Twurl.options.ssl?
63     http.use_ssl     = true
64     http.verify_mode = OpenSSL::SSL::VERIFY_NONE
65   end
66   http
67 end