lib/atol/transaction/get_document_state.rb
# frozen_string_literal: true
require 'atol/request/get_document_state'
require 'atol/errors'
module Atol
module Transaction
class GetDocumentState
def initialize(uuid:, token:, config: nil)
@config = config || Atol.config
raise(Atol::ConfigExpectedError) unless @config.is_a?(Atol::Config)
@params = { uuid: uuid, token: token, config: @config }
end
def call
request = Atol::Request::GetDocumentState.new(@params)
response = request.call
encoded_body = response.body.dup.force_encoding(Atol::ENCODING)
json = JSON.parse(encoded_body)
if response.code == '200' && json['error'].nil?
json
elsif Atol::ERRORS[json['error']['code']]
raise(Atol::ERRORS[json['error']['code']], encoded_body)
else
raise(encoded_body)
end
end
end
end
end