% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/hooks.R
\name{hooks}
\alias{hooks}
\title{Event Hooks}
\description{
Trigger functions to run on requests and/or responses.
See Details for more.
}
\details{
Functions passed to \code{request} are run \strong{before} the
request occurs. The meaning of triggering a function on the
request is that you can do things to the request object.

Functions passed to \code{response} are run \strong{once} the
request is done, and the response object is created.
The meaning of triggering a function on the
response is to do things on the response object.

The above for request and response applies the same
whether you make real HTTP requests or mock with
\code{webmockr}.
}
\note{
Only supported on \link{HttpClient} for now
}
\examples{
\dontrun{
# hooks on the request
fun_req <- function(request) {
  cat(paste0("Requesting: ", request$url$url), sep = "\\n")
}
(x <- HttpClient$new(url = "https://httpbin.org",
  hooks = list(request = fun_req)))
x$hooks
x$hooks$request
r1 <- x$get('get')

captured_req <- list()
fun_req2 <- function(request) {
  cat("Capturing Request", sep = "\\n")
  captured_req <<- request
}
(x <- HttpClient$new(url = "https://httpbin.org",
  hooks = list(request = fun_req2)))
x$hooks
x$hooks$request
r1 <- x$get('get')
captured_req



# hooks on the response
fun_resp <- function(response) {
  cat(paste0("status_code: ", response$status_code), sep = "\\n")
}
(x <- HttpClient$new(url = "https://httpbin.org",
  hooks = list(response = fun_resp)))
x$url
x$hooks
r1 <- x$get('get')

# both
(x <- HttpClient$new(url = "https://httpbin.org",
  hooks = list(request = fun_req, response = fun_resp)))
x$get("get")
}
}
