ncurl_aio {nanonext} | R Documentation |
ncurl Async
Description
nano cURL - a minimalist http(s) client - async edition.
Usage
ncurl_aio(
url,
convert = TRUE,
method = NULL,
headers = NULL,
data = NULL,
response = NULL,
timeout = NULL,
tls = NULL
)
Arguments
url |
the URL address. |
convert |
[default TRUE] logical value whether to attempt conversion of the received raw bytes to a character vector. Set to FALSE if downloading non-text data. |
method |
(optional) the HTTP method (defaults to 'GET' if not specified). |
headers |
(optional) a named character vector specifying the HTTP
request headers, for example: |
data |
(optional) character request data to be submitted. |
response |
(optional) a character vector specifying the response headers
to return e.g. |
timeout |
(optional) integer value in milliseconds after which the transaction times out if not yet complete. |
tls |
(optional) applicable to secure HTTPS sites only, a client TLS
Configuration object created by |
Value
An 'ncurlAio' (object of class 'ncurlAio' and 'recvAio') (invisibly). The following elements may be accessed:
-
$status
- integer HTTP repsonse status code (200 - OK). Usestatus_code
for a translation of the meaning. -
$headers
- named list of response headers supplied in 'response', or NULL otherwise. If the status code is within the 300 range, i.e. a redirect, the response header 'Location' is automatically appended to return the redirect address. -
$data
- the response body, as a character string if 'convert' = TRUE (may be further parsed as html, json, xml etc. as required), or a raw byte vector if FALSE (usewriteBin
to save as a file).
Promises
‘ncurlAio’ may be used anywhere that accepts a ‘promise’
from the promises package through the included
as.promise
method.
The promises created are completely event-driven and non-polling.
If a status code of 200 (OK) is returned then the promise is resolved with the reponse body, otherwise it is rejected with a translation of the status code or ‘errorValue’ as the case may be.
See Also
ncurl_session
for persistent connections.
Examples
nc <- ncurl_aio("https://www.r-project.org/",
response = c("date", "server"),
timeout = 2000L)
call_aio(nc)
nc$status
nc$headers
nc$data
if (interactive() && requireNamespace("promises", quietly = TRUE)) {
p <- as.promise(nc)
print(p)
p2 <- ncurl_aio("https://postman-echo.com/get") %...>% cat
is.promise(p2)
}