class Atol::Request::PostDocument

Constants

HEADERS
OPERATIONS

Public Class Methods

new(operation:, token:, body:, config: nil, req_logger: nil, res_logger: nil) click to toggle source
# File lib/atol/request/post_document.rb, line 14
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)
  raise(Atol::MissingConfigError, 'group_code missing') if @config.group_code.empty?
  raise(Atol::UnknownOperationError, operation.to_s) unless OPERATIONS.include?(operation.to_sym)

  @operation = operation
  @token = token
  @body = body
  @req_logger = req_logger
  @res_logger = res_logger
end

Public Instance Methods

call() click to toggle source
# File lib/atol/request/post_document.rb, line 28
def call
  http_client = @config.http_client
  uri = URI("#{@config.api_url}/#{@config.group_code}/#{@operation}")
  req_headers = HEADERS.merge('Token' => @token)
  req = http_client::Post.new(uri, req_headers)
  req.body = @body

  @req_logger.call(req) if @req_logger.respond_to?(:call)

  res = http_client.start(uri.hostname, uri.port, use_ssl: true) do |http|
    http.request(req)
  end

  @res_logger.call(res) if @res_logger.respond_to?(:call)

  res
end