test_that("can perform multiple requests", {
req <- request(example_url()) %>%
req_url_path("/iris") %>%
req_url_query(limit = 5)
resps <- req_perform_iterative(
req,
next_req = iterate_with_offset("page_index"),
max_reqs = 4
)
expect_length(resps, 4)
expect_equal(resp_url(resps[[4]]), paste0(example_url(), "iris?limit=5&page_index=4"))
})
test_that("can save results to disk", {
req <- request(example_url()) %>%
req_url_path("/iris") %>%
req_url_query(limit = 5)
dir <- withr::local_tempdir()
resps <- req_perform_iterative(
req,
next_req = iterate_with_offset("page_index"),
max_reqs = 2,
path = paste0(dir, "/file-{i}")
)
expect_equal(resps[[1]]$body, new_path(file.path(dir, "file-1")))
expect_equal(resps[[2]]$body, new_path(file.path(dir, "file-2")))
})
test_that("user temination still returns data", {
req <- request(example_url()) %>%
req_url_path("/iris") %>%
req_url_query(limit = 5)
next_req <- function(resp, req) interrupt()
expect_snapshot(
resps <- req_perform_iterative(req, next_req = next_req)
)
expect_length(resps, 1)
})
test_that("can retrieve all pages", {
req <- request(example_url()) %>%
req_url_path("/iris") %>%
req_url_query(limit = 1)
i <- 1
next_req <- function(resp, req) {
i <<- i + 1
if (i <= 120) {
req %>% req_url_query(page_index = 1)
}
}
expect_condition(
resps <- req_perform_iterative(req, next_req = next_req, max_reqs = Inf),
class = "httr2:::doubled"
)
expect_length(resps, 120)
})
test_that("can choose to return on failure", {
iterator <- function(resp, req) {
request_test("/status/:status", status = 404)
}
expect_error(
req_perform_iterative(request_test(), iterator),
class = "httr2_http_404"
)
out <- req_perform_iterative(request_test(), iterator, on_error = "return")
expect_length(out, 2)
expect_s3_class(out[[1]], "httr2_response")
expect_s3_class(out[[2]], "httr2_http_404")
})
test_that("checks its inputs", {
req <- request_test()
expect_snapshot(error = TRUE, {
req_perform_iterative(1)
req_perform_iterative(req, function(x, y) x + y)
req_perform_iterative(req, function(resp, req) {}, path = 1)
req_perform_iterative(req, function(resp, req) {}, max_reqs = -1)
req_perform_iterative(req, function(resp, req) {}, progress = -1)
})
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.