class Atol::Transaction::GetToken

Public Class Methods

new(config: nil) click to toggle source
# File lib/atol/transaction/get_token.rb, line 9
def initialize(config: nil)
  @config = config || Atol.config
  raise(Atol::ConfigExpectedError) unless @config.is_a?(Atol::Config)
end

Public Instance Methods

call() click to toggle source
# File lib/atol/transaction/get_token.rb, line 14
def call
  @config.req_tries_number.times do
    request = Atol::Request::GetToken.new(config: @config)
    response = request.call
    encoded_body = response.body.dup.force_encoding(Atol::ENCODING)
    json = JSON.parse(encoded_body)

    case response.code
    when '200'
      return json['token']
    when '400'
      raise Atol::AuthBadRequestError
    when '401'
      raise Atol::AuthUserOrPasswordError
    when '500'
      next
    end
    raise "#{response.code} #{response.body}"
  end
end