Nothing
skip_on_cran()
skip_if_offline(url_parse(hb())$domain)
context("HttpClient: post")
test_that("post request works", {
cli <- HttpClient$new(url = hb())
aa <- cli$post("post")
expect_is(aa, "HttpResponse")
expect_is(aa$handle, 'curl_handle')
expect_is(aa$content, "raw")
expect_is(aa$method, "character")
expect_equal(aa$method, "post")
expect_is(aa$parse, "function")
expect_is(aa$parse(), "character")
expect_true(aa$success())
expect_null(aa$request$fields)
})
test_that("post request with body", {
cli <- HttpClient$new(url = hb())
aa <- cli$post("post", body = list(hello = "world"))
expect_is(aa, "HttpResponse")
expect_is(aa$handle, 'curl_handle')
expect_is(aa$content, "raw")
expect_is(aa$method, "character")
expect_equal(aa$method, "post")
expect_is(aa$parse, "function")
expect_is(aa$parse(), "character")
expect_true(aa$success())
expect_named(aa$request$fields, "hello")
expect_equal(aa$request$fields[[1]], "world")
})
body <- list(
custname = 'Jane',
custtel = '444-4444',
custemail = 'stuff@things.com',
size = 'small',
topping = 'bacon',
comments = 'make it snappy'
)
test_that("post request: encode=form", {
cli <- HttpClient$new(url = hb("/post"))
form <- cli$post(body = body, encode = "form")
expect_is(form, "HttpResponse")
expect_equal(form$method, "post")
expect_match(
jsonlite::fromJSON(form$parse("UTF-8"))$headers$`Content-Type`,
"application/x-www-form-urlencoded")
expect_null(form$request$fields)
expect_true(form$request$options$post)
expect_type(form$request$options$postfieldsize, "integer")
expect_is(form$request$options$postfields, "raw")
})
test_that("post request: encode=multipart", {
cli <- HttpClient$new(url = hb("/post"))
multi <- cli$post(body = body, encode = "multipart")
expect_is(multi, "HttpResponse")
expect_equal(multi$method, "post")
expect_match(
jsonlite::fromJSON(multi$parse("UTF-8"))$headers$`Content-Type`,
"multipart/form-data")
expect_is(multi$request$fields, "list")
expect_is(multi$request$fields$custname, "character")
expect_is(multi$request$fields$size, "character")
expect_true(multi$request$options$post)
expect_null(multi$request$options$postfieldsize, "integer")
expect_null(multi$request$options$postfields, "raw")
})
test_that("post request: encode=form/multipart both use form content-type when 0 length list", {
cli <- HttpClient$new(url = hb("/post"))
form <- cli$post(body = list(), encode = "form")
multi <- cli$post(body = list(), encode = "multipart")
expect_match(
jsonlite::fromJSON(form$parse("UTF-8"))$headers$`Content-Type`,
"application/x-www-form-urlencoded")
expect_match(
jsonlite::fromJSON(multi$parse("UTF-8"))$headers$`Content-Type`,
"application/x-www-form-urlencoded")
})
test_that("post request: encode=form/multipart drop NULL elements in a list", {
cli <- HttpClient$new(url = hb("/post"))
form <- cli$post(body = list(a = 5, b = NULL), encode = "form")
multi <- cli$post(body = list(a = 5, b = NULL), encode = "multipart")
expect_equal(jsonlite::fromJSON(form$parse("UTF-8"))$form, list(a = "5"))
expect_equal(jsonlite::fromJSON(multi$parse("UTF-8"))$form, list(a = "5"))
})
test_that("post request with file upload", {
# txt file
## as file
file <- upload(system.file("CITATION"))
cli <- HttpClient$new(url = hb())
aa <- cli$post("post", body = list(a = file))
expect_is(aa, "HttpResponse")
expect_is(aa$content, "raw")
expect_null(aa$request$options$readfunction)
out <- jsonlite::fromJSON(aa$parse("UTF-8"))
expect_named(out$files, "a")
expect_match(out$files$a, "bibentry")
## as data
aa2 <- cli$post("post", body = file)
expect_is(aa2, "HttpResponse")
expect_is(aa2$content, "raw")
expect_is(aa2$request$options$readfunction, "function")
out <- jsonlite::fromJSON(aa2$parse("UTF-8"))
expect_equal(length(out$files), 0)
expect_is(out$data, "character")
expect_match(out$data, "bibentry")
# binary file: jpeg
file <- upload(file.path(Sys.getenv("R_DOC_DIR"), "html/logo.jpg"))
cli <- HttpClient$new(url = hb())
aa <- cli$post("post", body = list(a = file))
expect_is(aa, "HttpResponse")
expect_is(aa$content, "raw")
expect_named(aa$request$fields, "a")
out <- jsonlite::fromJSON(aa$parse("UTF-8"))
expect_named(out$files, "a")
expect_match(out$files$a, "data:image/jpeg")
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.