Class: Valvat::HMRC::AccessToken

Inherits:
Object
  • Object
show all
Defined in:
lib/valvat/hmrc/access_token.rb

Constant Summary collapse

Error =
Class.new(StandardError)
PRODUCTION_ENDPOINT_URL =
'https://api.service.hmrc.gov.uk/oauth/token'
SANDBOX_ENDPOINT_URL =
'https://test-api.service.hmrc.gov.uk/oauth/token'
SCOPE =
'read:vat'
GRANT_TYPE =
'client_credentials'

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ AccessToken

Returns a new instance of AccessToken.



16
17
18
19
20
21
22
23
# File 'lib/valvat/hmrc/access_token.rb', line 16

def initialize(options = {})
  uk_options = options[:uk].is_a?(Hash) ? options[:uk] : {}

  @client_id = uk_options[:client_id].to_s
  @client_secret = uk_options[:client_secret].to_s
  @rate_limit = options[:rate_limit]
  @endpoint_uri = URI(uk_options[:sandbox] ? SANDBOX_ENDPOINT_URL : PRODUCTION_ENDPOINT_URL)
end

Class Method Details

.fetch(options = {}) ⇒ Object



25
26
27
# File 'lib/valvat/hmrc/access_token.rb', line 25

def self.fetch(options = {})
  new(options).fetch
end

Instance Method Details

#fetch(uri = @endpoint_uri, request_count = 0) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/valvat/hmrc/access_token.rb', line 29

def fetch(uri = @endpoint_uri, request_count = 0)
  raise_if_invalid!

  request = build_request(uri)
  response = build_https.request(request)
  handle_response!(response, request_count)
rescue Errno::ECONNRESET, IOError
  raise if request_count > @rate_limit

  fetch(uri, request_count + 1)
end