Nothing
# HTTP transport using the curl command-line utility. Useful on systems that have a working curl but
# not necessarily a working curl library, such as Windows 10.
httpCurl <- function(
protocol,
host,
port,
method,
path,
headers,
contentType = NULL,
contentFile = NULL,
certificate = NULL,
timeout = NULL
) {
if (!is.null(contentFile) && is.null(contentType)) {
stop("You must specify a contentType for the specified file")
}
if (!is.null(contentFile)) {
fileLength <- file.info(contentFile)$size
}
headers <- appendCookieHeaders(
list(protocol = protocol, host = host, port = port, path = path),
headers
)
extraHeaders <- character()
for (header in names(headers)) {
if (
!identical(header, "Content-Type") && !identical(header, "Content-Length")
) {
extraHeaders <- paste(extraHeaders, "--header")
extraHeaders <- paste(
extraHeaders,
paste('"', header, ": ", headers[[header]], '"', sep = "")
)
}
}
outputFile <- tempfile()
command <- paste("curl", "-i", "-X", method)
if (httpVerbose()) {
command <- paste(command, "-v")
}
if (!is.null(timeout)) {
command <- paste(command, "--connect-timeout", timeout)
}
if (!is.null(contentFile)) {
command <- paste(
command,
"-T",
shQuote(contentFile),
"--header",
paste('"', "Content-Type: ", contentType, '"', sep = ""),
"--header",
paste('"', "Content-Length: ", fileLength, '"', sep = "")
)
}
# add prefix to port if necessary
if (nzchar(port)) {
port <- paste(":", port, sep = "")
}
if (!isTRUE(getOption("rsconnect.check.certificate", TRUE))) {
# suppressed certificate check
command <- paste(command, "--insecure")
} else if (!is.null(certificate)) {
# cert check not suppressed and we have a supplied cert
command <- paste(command, "--cacert", shQuote(certificate))
}
command <- paste(
command,
extraHeaders,
"--header",
"Expect:",
"--user-agent",
userAgent(),
"--silent",
"--show-error",
"-o",
shQuote(outputFile),
paste('"', protocol, "://", host, port, path, '"', sep = "")
)
result <- NULL
time <- system.time(gcFirst = FALSE, {
result <- system(command)
})
httpTrace(method, path, time)
# emit JSON trace if requested
if (
!is.null(contentFile) &&
httpTraceJson() &&
identical(contentType, "application/json")
) {
fileLength <- file.info(contentFile)$size
fileContents <- readBin(contentFile, what = "raw", n = fileLength)
cat(paste0("<< ", rawToChar(fileContents), "\n"))
}
if (result == 0) {
fileConn <- file(outputFile, "rb")
defer(close(fileConn))
readHttpResponse(
list(
protocol = protocol,
host = host,
port = port,
method = method,
path = path
),
fileConn
)
} else {
stop(paste("Curl request failed (curl error", result, "occurred)"))
}
}
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.