After preparing a request, call req_stream() to perform the request and handle the result with a streaming callback. This is useful for streaming HTTP APIs where potentially the stream never ends.

req_stream(req, callback, timeout_sec = Inf, buffer_kb = 64)

Arguments

req

A request.

callback

A single argument callback function. It will be called repeatedly with a raw vector whenever there is at least buffer_kb worth of data to process. It must return TRUE to continue streaming.

timeout_sec

Number of seconds to processs stream for.

buffer_kb

Buffer size, in kilobytes.

Value

An HTTP response.

Examples

show_bytes <- function(x) {
  cat("Got ", length(x), " bytes\n", sep = "")
  TRUE
}
resp <- request("http://httpbin.org/stream-bytes/100000") %>%
  req_stream(show_bytes, buffer_kb = 32)
#> Got 32768 bytes
#> Got 32768 bytes
#> Got 32768 bytes
#> Got 1696 bytes