# NOT RUN {
# pass in requests via ...
req1 <- HttpRequest$new(
url = "https://httpbin.org/get",
opts = list(verbose = TRUE),
headers = list(foo = "bar")
)$get()
req2 <- HttpRequest$new(url = "https://httpbin.org/post")$post()
# Create an AsyncVaried object
out <- AsyncVaried$new(req1, req2)
# before you make requests, the methods return empty objects
out$status()
out$status_code()
out$content()
out$times()
out$parse()
out$responses()
# make requests
out$request()
# access various parts
## http status objects
out$status()
## status codes
out$status_code()
## content (raw data)
out$content()
## times
out$times()
## parsed content
out$parse()
## response objects
out$responses()
# use $verb() method to select http verb
method <- "post"
req1 <- HttpRequest$new(
url = "https://httpbin.org/post",
opts = list(verbose = TRUE),
headers = list(foo = "bar")
)$verb(method)
req2 <- HttpRequest$new(url = "https://httpbin.org/post")$verb(method)
out <- AsyncVaried$new(req1, req2)
out
out$request()
out$responses()
# pass in requests in a list via .list param
reqlist <- list(
HttpRequest$new(url = "https://httpbin.org/get")$get(),
HttpRequest$new(url = "https://httpbin.org/post")$post(),
HttpRequest$new(url = "https://httpbin.org/put")$put(),
HttpRequest$new(url = "https://httpbin.org/delete")$delete(),
HttpRequest$new(url = "https://httpbin.org/get?g=5")$get(),
HttpRequest$new(
url = "https://httpbin.org/post")$post(body = list(y = 9)),
HttpRequest$new(
url = "https://httpbin.org/get")$get(query = list(hello = "world"))
)
out <- AsyncVaried$new(.list = reqlist)
out$request()
out$status()
out$status_code()
out$content()
out$times()
out$parse()
# using auth with async
url <- "https://httpbin.org/basic-auth/user/passwd"
auth <- auth(user = "user", pwd = "passwd")
reqlist <- list(
HttpRequest$new(url = url, auth = auth)$get(),
HttpRequest$new(url = url, auth = auth)$get(query = list(a=5)),
HttpRequest$new(url = url, auth = auth)$get(query = list(b=3))
)
out <- AsyncVaried$new(.list = reqlist)
out$request()
out$status()
out$parse()
# failure behavior
## e.g. when a URL doesn't exist, a timeout, etc.
reqlist <- list(
HttpRequest$new(url = "http://stuffthings.gvb")$get(),
HttpRequest$new(url = "https://httpbin.org")$head(),
HttpRequest$new(url = "https://httpbin.org",
opts = list(timeout_ms = 10))$head()
)
(tmp <- AsyncVaried$new(.list = reqlist))
tmp$request()
tmp$responses()
tmp$parse("UTF-8")
# access intemediate redirect headers
dois <- c("10.7202/1045307ar", "10.1242/jeb.088898", "10.1121/1.3383963")
reqlist <- list(
HttpRequest$new(url = paste0("https://doi.org/", dois[1]))$get(),
HttpRequest$new(url = paste0("https://doi.org/", dois[2]))$get(),
HttpRequest$new(url = paste0("https://doi.org/", dois[3]))$get()
)
tmp <- AsyncVaried$new(.list = reqlist)
tmp$request()
tmp
lapply(tmp$responses(), "[[", "response_headers_all")
# }
Run the code above in your browser using DataLab