Method: OpenapiClient::ApiClient#call_api

Defined in:
lib/openapi_client/api_client.rb

#call_api(http_method, path, opts = {}) ⇒ Array<(Object, Integer, Hash)>

Call an API with given options.

Returns:

  • (Array<(Object, Integer, Hash)>)

    an array of 3 elements: the data deserialized from response body (could be nil), response status code and response headers.



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/openapi_client/api_client.rb', line 48

def call_api(http_method, path, opts = {})
  request = build_request(http_method, path, opts)
  response = request.run

  if @config.debugging
    @config.logger.debug "HTTP response body ~BEGIN~\n#{response.body}\n~END~\n"
  end

  unless response.success?
    if response.timed_out?
      fail ApiError.new('Connection timed out')
    elsif response.code == 0
      # Errors from libcurl will be made visible here
      fail ApiError.new(:code => 0,
                        :message => response.return_message)
    else
      fail ApiError.new(:code => response.code,
                        :response_headers => response.headers,
                        :response_body => response.body),
           response.status_message
    end
  end

  if opts[:return_type]
    data = deserialize(response, opts[:return_type])
  else
    data = nil
  end
  return data, response.code, response.headers
end