Sha256: c871018d358bdc1d2a221ff5d20c6c472a1514746cbe647090d5493ae95940f2

Contents?: true

Size: 890 Bytes

Versions: 3

Compression:

Stored size: 890 Bytes

Contents

# 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

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
atol-0.7 lib/atol/transaction/get_document_state.rb
atol-0.6 lib/atol/transaction/get_document_state.rb
atol-0.5.1 lib/atol/transaction/get_document_state.rb