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
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