class SoapyBing::OauthCredentials

Constants

SANDBOX_TOKEN_URL
TOKEN_URL

Attributes

client_id[R]
client_secret[R]
refresh_token[R]

Public Class Methods

new(oauth_options = {}) click to toggle source
# File lib/soapy_bing/oauth_credentials.rb, line 14
def initialize(oauth_options = {})
  param_guard = ParamGuard.new(oauth_options, env_namespace: 'BING_ADS_OAUTH')
  @client_id = param_guard.require!(:client_id)
  @client_secret = param_guard.require!(:client_secret)
  @refresh_token = param_guard.require!(:refresh_token)
end

Public Instance Methods

access_token() click to toggle source
# File lib/soapy_bing/oauth_credentials.rb, line 21
def access_token
  @access_token ||= request_access_token
end

Private Instance Methods

access_token_params() click to toggle source
# File lib/soapy_bing/oauth_credentials.rb, line 41
def access_token_params
  {
    client_id: client_id,
    client_secret: client_secret,
    grant_type: 'refresh_token',
    refresh_token: refresh_token
  }
end
request_access_token() click to toggle source
# File lib/soapy_bing/oauth_credentials.rb, line 27
def request_access_token
  resp = HTTParty.post(token_url, body: access_token_params)

  if resp.code != 200
    raise TokenRefreshError, "#{resp['error_description']} (#{resp['error']})"
  end

  resp['access_token']
end
token_url() click to toggle source
# File lib/soapy_bing/oauth_credentials.rb, line 37
def token_url
  ENV['BING_ADS_SANDBOX'] == '1' ? SANDBOX_TOKEN_URL : TOKEN_URL
end