The HTTP Request Object
This object is returned from client:get(), client:post() and client:put() and represents a request that has yet to be sent to the remote server.
You can use the methods of this object to further configure the request, and then send the request.
The following methods are supported:
request:header(name, value)
Sets an HTTP header. name and value are both strings and correspond to the
header name and value respectively.
request:headers({HEADERS})
Sets multiple HTTP headers. HEADERS is an object-style table holding
name/value pairs for the headers and values that should be set.
request:basic_auth(username [, password])
Configures the username and optional password that should be used to perform HTTP Basic authentication.
Consider using a keysource with kumo.secrets.load to retrieve credentials.
request:bearer_auth(token)
Configures the token to be used for HTTP Bearer authentication
Consider using a keysource with kumo.secrets.load to retrieve credentials.
request:body(body)
Sets the body of the request. Body must be a string.
local request = kumo.http.build_client({}):post 'https://example.com'
request:header('Content-Type', 'application/json')
request:body(kumo.json_encode {
key = 'value',
})
request:form_url_encoded({PARAMS})
Sets the body of the request to the provided parameters, using the
application/x-www-form-urlencoded encoding scheme. The Content-Type header
is implicitly set to application/x-www-form-urlencoded.
PARAMS is an object-style table whose values must be UTF-8 strings.
local request = kumo.http.build_client({}):post 'https://example.com'
request:form_url_encoded {
key = 'value',
other_key = 'other_value',
}
request:form_multipart_data({PARAMS})
Sets the body of the request to the provided parameters, using the
multipart/form-data encoding scheme. The Content-Type header
is implicitly set to multipart/form-data with the automatically
determined boundary field.
PARAMS is an object-style table whose values should be either
UTF-8 strings or lua binary strings. Binary strings are encoded
as application/octet-stream in the generated form data.
local request = kumo.http.build_client({}):post 'https://example.com'
request:form_multipart_data {
key = 'value',
other_key = 'other_value',
}
request:send()
Sends the request and returns Response object representing the result of the request.
request:timeout(duration)
Since: Version 2024.06.10-84e84b89
The functionality described in this outlined box requires version 2024.06.10-84e84b89 of KumoMTA, or a more recent version.
Sets the timeout duration for the request. If no response is received within the specified duration, the request will raise an error.
The default timeout is "1 minute".
You may pass a duration string like "1 minute".