Sha256: 714a7ab99eabcbda27efd2be85a94db1185cac4b31f43b0e27d894e3acf67905

Contents?: true

Size: 1.03 KB

Versions: 5

Compression:

Stored size: 1.03 KB

Contents

require 'atol/request/post_document'
require 'atol/errors'

module Atol
  module Transaction
    class PostDocument
      def initialize(operation:, token:, body:, config: nil, req_logger: nil, res_logger: nil)
        @config = config || Atol.config
        raise(Atol::ConfigExpectedError) unless @config.is_a?(Atol::Config)
        @params = Hash[
          operation: operation,
          token: token,
          body: body,
          config: config,
          req_logger: req_logger,
          res_logger: res_logger
        ]
      end

      def call
        request = Atol::Request::PostDocument.new(params)
        response = request.call
        encoded_body = response.body.force_encoding(Atol::ENCODING)
        json = JSON.parse(encoded_body)

        if response.code == '200' && json['error'].nil?
          json
        elsif ERRORS[json['error']['code']]
          raise(ERRORS[json['error']['code']], encoded_body)
        else
          raise(encoded_body)
        end
      end

      private

      attr_reader :params
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
atol-0.3 lib/atol/transaction/post_document.rb
atol-0.2 lib/atol/transaction/post_document.rb
atol-0.1.2 lib/atol/transaction/post_document.rb
atol-0.1.1 lib/atol/transaction/post_document.rb
atol-0.1 lib/atol/transaction/post_document.rb