class Qapi::Connection
Attributes
site[RW]
token_url[RW]
Public Class Methods
new(key, secret, integration)
click to toggle source
TODO: Make this generic and don’t use an Integration object OR we could create a value object inside Qapi
@param [Integration] integration model
# File lib/qapi/connection.rb, line 13 def initialize(key, secret, integration) @integration = integration client = OAuth2::Client.new(key, secret, site: self.class.site, token_url: self.class.token_url) @access_token = OAuth2::AccessToken.new(client, integration.token, { refresh_token: integration.refresh_token, expires_at: integration.expires_at, mode: :query }) end
Public Instance Methods
get(path, query = nil)
click to toggle source
# File lib/qapi/connection.rb, line 23 def get(path, query = nil) refresh_if_required! @access_token.get(path, params: query).tap do |response| # TODO: Handle the case where the token expires raise Qapi::Error.new(response.body) unless response.status == 200 end end
Protected Instance Methods
refresh_if_required!()
click to toggle source
# File lib/qapi/connection.rb, line 32 def refresh_if_required! if @access_token.expired? @access_token = @access_token.refresh! @integration.update!( token: @access_token.token, refresh_token: @access_token.refresh_token, expires_at: @access_token.expires_at ) end end