class CapitalOneAPI::Client
Attributes
access_token[RW]
client_id[RW]
client_secret[RW]
redirect_uri[RW]
refresh_token[RW]
server_url[RW]
Public Class Methods
new(client_id:, client_secret:, redirect_uri:, server_url: CapitalOneAPI::PRODUCTION_SERVER_URL)
click to toggle source
# File lib/capitalone-api/client.rb, line 14 def initialize(client_id:, client_secret:, redirect_uri:, server_url: CapitalOneAPI::PRODUCTION_SERVER_URL) @client_id = client_id @client_secret = client_secret @redirect_uri = redirect_uri @server_url = server_url @logger = Logger.new("#{Bundler.root}/log/capitalone_api.log") end
Public Instance Methods
get_access_tokens(auth_code)
click to toggle source
@param [String] auth_code
# File lib/capitalone-api/client.rb, line 23 def get_access_tokens(auth_code) params = { grant_type: 'authorization_code', code: auth_code, client_id: @client_id, client_secret: @client_secret, redirect_uri: @redirect_uri } result = post_request("#{@server_url}/oauth/oauth20/token", params) @access_token = result['access_token'] @refresh_token = result['refresh_token'] result end
refresh_access_token(refresh_token)
click to toggle source
@param [String] refresh_token
# File lib/capitalone-api/client.rb, line 42 def refresh_access_token(refresh_token) params = { grant_type: 'refresh_token', refresh_token: refresh_token, client_id: @client_id, client_secret: @client_secret } result = post_request("#{@server_url}/oauth/oauth20/token", params) @access_token = result['access_token'] @refresh_token = result['refresh_token'] result end
Private Instance Methods
get_request(url, access_token)
click to toggle source
@param [String] url @param [String] access_token
# File lib/capitalone-api/client.rb, line 91 def get_request(url, access_token) @logger.info("URL:#{url}; access_token:#{access_token}") uri = URI.parse(url) req = Net::HTTP::Get.new(uri) req['Accept'] = ['application/json', 'v=1'] req['Authorization'] = ["Bearer #{access_token}"] res = Net::HTTP.start(uri.hostname, uri.port, ssl_options) do |http| http.request(req) end @logger.info("URL:#{url}; response:#{res.body}") MultiJson.load(res.body) end
post_request(url, params)
click to toggle source
@param [String] url @param [Hash] params
# File lib/capitalone-api/client.rb, line 71 def post_request(url, params) @logger.info("URL:#{url}; params:#{params}") uri = URI.parse(url) req = Net::HTTP::Post.new(uri) req.set_form_data(params) res = Net::HTTP.start(uri.hostname, uri.port, ssl_options) do |http| http.request(req) end @logger.info("URL:#{url}; response:#{res.body}") MultiJson.load(res.body) end
ssl_options()
click to toggle source
# File lib/capitalone-api/client.rb, line 110 def ssl_options { use_ssl: true, ssl_version: 'TLSv1_2' } end