Method: OpenapiClient::ApiClient#build_request

Defined in:
lib/openapi_client/api_client.rb

#build_request(http_method, path, opts = {}) ⇒ Typhoeus::Request

Builds the HTTP request

Options Hash (opts):

  • :header_params (Hash)

    Header parameters

  • :query_params (Hash)

    Query parameters

  • :form_params (Hash)

    Query parameters

  • :body (Object)

    HTTP body (JSON/XML)



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/openapi_client/api_client.rb', line 89

def build_request(http_method, path, opts = {})
  url = build_request_url(path, opts)
  http_method = http_method.to_sym.downcase

  header_params = @default_headers.merge(opts[:header_params] || {})
  query_params = opts[:query_params] || {}
  form_params = opts[:form_params] || {}

  update_params_for_auth! header_params, query_params, opts[:auth_names]

  # set ssl_verifyhosts option based on @config.verify_ssl_host (true/false)
  _verify_ssl_host = @config.verify_ssl_host ? 2 : 0

  req_opts = {
    :method => http_method,
    :headers => header_params,
    :params => query_params,
    :params_encoding => @config.params_encoding,
    :timeout => @config.timeout,
    :ssl_verifypeer => @config.verify_ssl,
    :ssl_verifyhost => _verify_ssl_host,
    :sslcert => @config.cert_file,
    :sslkey => @config.key_file,
    :verbose => @config.debugging
  }

  # set custom cert, if provided
  req_opts[:cainfo] = @config.ssl_ca_cert if @config.ssl_ca_cert

  if [:post, :patch, :put, :delete].include?(http_method)
    req_body = build_request_body(header_params, form_params, opts[:body])
    req_opts.update :body => req_body
    if @config.debugging
      @config.logger.debug "HTTP request body param ~BEGIN~\n#{req_body}\n~END~\n"
    end
  end

  request = Typhoeus::Request.new(url, req_opts)
  download_file(request) if opts[:return_type] == 'File'
  request
end