Supported callback functions:
- ‘request’
This callback is called before an HTTP request is performed, with the
requestobject as an argument. If the callback returns a value other thanNULL, the HTTP request is not performed at all, and the return value of the callback is returned. This mechanism can be used to replay previously recorded HTTP responses.- ‘response’
This callback is called after an HTTP request is performed. The callback is called with two arguments: the
requestobject and theresponseobject of the HTTP request. If this callback returns a value other thanNULL, then this value is returned byhttr.
Arguments
- name
Character scalar, name of the callback to query or set.
- new_callback
The callback function to install, a function object; or
NULLto remove the currently installed callback (if any).
Value
get_callback returns the currently installed
callback, or NULL if none is installed.
set_callback returns the previously installed callback,
or NULL if none was installed.
Details
Note that it is not possible to install multiple callbacks of the same
type. The installed callback overwrites the previously intalled one.
To uninstall a callback function, set it to NULL with
set_callback().
See the httrmock package for a proper example that uses
callbacks.
Examples
if (FALSE) {
## Log all HTTP requests to the screeen
req_logger <- function(req) {
cat("HTTP request to", sQuote(req$url), "\n")
}
old <- set_callback("request", req_logger)
g1 <- GET("https://httpbin.org")
g2 <- GET("https://httpbin.org/ip")
set_callback("request", old)
## Log all HTTP requests and response status codes as well
req_logger2 <- function(req) {
cat("HTTP request to", sQuote(req$url), "... ")
}
res_logger <- function(req, res) {
cat(res$status_code, "\n")
}
old_req <- set_callback("request", req_logger2)
old_res <- set_callback("response", res_logger)
g3 <- GET("https://httpbin.org")
g4 <- GET("https://httpbin.org/ip")
set_callback("request", old_req)
set_callback("response", old_res)
## Return a recorded response, without performing the HTTP request
replay <- function(req) {
if (req$url == "https://httpbin.org") g3
}
old_req <- set_callback("request", replay)
grec <- GET("https://httpbin.org")
grec$date == g3$date
set_callback("request", old_req)
}