Module: PatientHttp::RequestHelper::ClassMethods

Includes:
HttpMethodHelpers
Defined in:
lib/patient_http/request_helper.rb

Instance Method Summary collapse

Methods included from HttpMethodHelpers

#async_delete, #async_get, #async_patch, #async_post, #async_put

Instance Method Details

#async_request(method, url, callback:, headers: nil, body: nil, json: nil, params: nil, timeout: nil, raise_error_responses: nil, callback_args: nil) ⇒ Object

Builds and dispatches an asynchronous HTTP request.

When a request template is configured, the request is built from the template. Otherwise, it is built directly from the provided arguments.

Parameters:

  • method (Symbol)

    HTTP method (‘:get`, `:post`, `:put`, `:patch`, `:delete`)

  • url (String)

    absolute URL or path (when using a request template)

  • callback (Class, String)

    callback class to handle the response

  • headers (Hash, nil) (defaults to: nil)

    request headers

  • body (String, nil) (defaults to: nil)

    raw request body

  • json (Hash, Array, nil) (defaults to: nil)

    JSON payload encoded by the request layer

  • params (Hash, nil) (defaults to: nil)

    query parameters

  • timeout (Numeric, nil) (defaults to: nil)

    timeout in seconds for this request

  • raise_error_responses (Boolean, nil) (defaults to: nil)

    when true, non-success responses are reported as errors

  • callback_args (Hash, nil) (defaults to: nil)

    JSON-compatible callback arguments

Returns:

  • (Object)

    return value from the registered request handler



144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# File 'lib/patient_http/request_helper.rb', line 144

def async_request(
  method,
  url,
  callback:,
  headers: nil,
  body: nil,
  json: nil,
  params: nil,
  timeout: nil,
  raise_error_responses: nil,
  callback_args: nil
)
  template = async_request_template
  kwargs = {body: body, json: json, headers: headers, params: params, timeout: timeout}
  request = if template
    template.request(method, url, **kwargs)
  else
    Request.new(method, url, **kwargs)
  end

  PatientHttp.execute(
    request: request,
    callback: callback,
    callback_args: callback_args,
    raise_error_responses: raise_error_responses
  )
end

#async_request_templateRequestTemplate?

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns the RequestTemplate defined for this class or its ancestors, or nil if none is defined. This allows subclasses to inherit the request template from their parent class if they don’t define their own.

Returns:

  • (RequestTemplate, nil)

    the request template for this class or its ancestors



178
179
180
181
182
183
# File 'lib/patient_http/request_helper.rb', line 178

def async_request_template
  return @patient_http_request_template if @patient_http_request_template
  return superclass.async_request_template if superclass.include?(PatientHttp::RequestHelper)

  nil
end

#request_template(base_url: nil, headers: {}, params: nil, timeout: 30) ⇒ void

This method returns an undefined value.

Defines a default request template for this class.

Requests created with the helper methods merge these defaults unless explicitly overridden.

Parameters:

  • base_url (String, nil) (defaults to: nil)

    optional base URL used to resolve relative request URLs

  • headers (Hash) (defaults to: {})

    default headers for requests

  • params (Hash, nil) (defaults to: nil)

    default query parameters for requests

  • timeout (Float) (defaults to: 30)

    default timeout in seconds



118
119
120
121
122
123
124
125
# File 'lib/patient_http/request_helper.rb', line 118

def request_template(base_url: nil, headers: {}, params: nil, timeout: 30)
  @patient_http_request_template = RequestTemplate.new(
    base_url: base_url,
    headers: headers,
    params: params,
    timeout: timeout
  )
end