If you have http requests for which you write the response to disk, then
use vcr_configure()
to set the write_disk_path
option. See more about
the write_disk_path configuration option in vignette("configuration", package = "vcr")
.
Here, we create a temporary directory, then set the fixtures
tmpdir <- tempdir() vcr_configure( dir = file.path(tmpdir, "fixtures"), write_disk_path = file.path(tmpdir, "files") )
Then pass a file path (that doesn't exist yet) to crul's disk
parameter.
vcr
will take care of handling writing the response to that file in
addition to the cassette.
library(crul) ## make a temp file f <- tempfile(fileext = ".json") ## make a request cas <- use_cassette("test_write_to_disk", { out <- HttpClient$new("https://httpbin.org/get")$get(disk = f) }) file.exists(out$content) out$parse()
This also works with httr
. The only difference is that you write to disk
with a function httr::write_disk(path)
rather than a parameter.
Note that when you write to disk when using vcr
, the cassette is slightly
changed. Instead of holding the http response body itself, the cassette
has the file path with the response body.
http_interactions: - request: method: get uri: https://httpbin.org/get response: headers: status: HTTP/1.1 200 OK access-control-allow-credentials: 'true' body: encoding: UTF-8 file: yes string: /private/var/folders/fc/n7g_vrvn0sx_st0p8lxb3ts40000gn/T/Rtmp5W4olr/files/file177e2e5d97ec.json
And the file has the response body that otherwise would have been in the string
yaml field above:
{ "args": {}, "headers": { "Accept": "application/json, text/xml, application/xml, */*", "Accept-Encoding": "gzip, deflate", "Host": "httpbin.org", "User-Agent": "libcurl/7.54.0 r-curl/4.3 crul/0.9.0" }, "origin": "24.21.229.59, 24.21.229.59", "url": "https://httpbin.org/get" }
invisible(vcr_configure_reset())
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.