Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

added more verbose error message to httr::stop_for_status #30

Merged
merged 10 commits into from
Feb 26, 2021
3 changes: 3 additions & 0 deletions DESCRIPTION
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ Authors@R: c(
),
person(
"Jan", "Kanis", role = "ctb"
),
person(
"Edward", "Jee", role = "ctb"
))
Imports:
checkmate,
Expand Down
3 changes: 3 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# CHANGES in dataverse 0.3.3
* More verbose error messages returned on httr failure. (#31 @EdJeeOnGithub)

# CHANGES in dataverse 0.3.1

* Avoids tests in R Check if the dataverse server is not available (#77)
Expand Down
4 changes: 2 additions & 2 deletions R/SWORD.R
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
service_document <- function(key = Sys.getenv("DATAVERSE_KEY"), server = Sys.getenv("DATAVERSE_SERVER"), ...) {
u <- paste0(api_url(server, prefix="dvn/api/"), "data-deposit/v1.1/swordv2/service-document")
r <- httr::GET(u, httr::authenticate(key, ""), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
x <- xml2::as_list(xml2::read_xml(httr::content(r, "text")))
w <- x$workspace
out <- list()
Expand Down Expand Up @@ -75,7 +75,7 @@ list_datasets <- function(dataverse, key = Sys.getenv("DATAVERSE_KEY"), server =
}
u <- paste0(api_url(server, prefix="dvn/api/"), "data-deposit/v1.1/swordv2/collection/dataverse/", dataverse)
r <- httr::GET(u, httr::authenticate(key, ""), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)

# clean up response structure
x <- xml2::as_list(xml2::read_xml(r$content))
Expand Down
10 changes: 5 additions & 5 deletions R/SWORD_dataset.R
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ initiate_sword_dataset <- function(dataverse, body, key = Sys.getenv("DATAVERSE_
b <- do.call("build_metadata", c(body, metadata_format = "dcterms"))
}
r <- httr::POST(u, httr::authenticate(key, ""), httr::add_headers("Content-Type" = "application/atom+xml"), body = b, ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
structure(parse_atom(httr::content(r, as = "text", encoding = "UTF-8")))
}

Expand Down Expand Up @@ -107,7 +107,7 @@ delete_sword_dataset <- function(dataset, key = Sys.getenv("DATAVERSE_KEY"), ser
}

r <- httr::DELETE(u, httr::authenticate(key, ""), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
cont <- httr::content(r, as = "text", encoding = "UTF-8")
if (cont == "") {
return(TRUE)
Expand Down Expand Up @@ -162,7 +162,7 @@ publish_sword_dataset <- function(dataset, key = Sys.getenv("DATAVERSE_KEY"), se
}

r <- httr::POST(u, httr::authenticate(key, ""), httr::add_headers("In-Progress" = "false"), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
out <- xml2::as_list(xml2::read_xml(httr::content(r, as = "text", encoding = "UTF-8")))
out
}
Expand Down Expand Up @@ -206,7 +206,7 @@ dataset_atom <- function(dataset, key = Sys.getenv("DATAVERSE_KEY"), server = Sy
}

r <- httr::GET(u, httr::authenticate(key, ""), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
out <- parse_atom(rawToChar(r$content))
out
}
Expand All @@ -230,6 +230,6 @@ dataset_statement <- function(dataset, key = Sys.getenv("DATAVERSE_KEY"), server
u <- paste0(api_url(server, prefix="dvn/api/"), "data-deposit/v1.1/swordv2/statement/study/", dataset)
}
r <- httr::GET(u, httr::authenticate(key, ""), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
parse_dataset_statement(rawToChar(r$content))
}
4 changes: 2 additions & 2 deletions R/SWORD_files.R
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ add_file <- function(dataset, file, key = Sys.getenv("DATAVERSE_KEY"), server =
"Content-Type" = "application/zip",
"Packaging" = "http://purl.org/net/sword/package/SimpleZip")
r <- httr::POST(u, httr::authenticate(key, ""), h, body = httr::upload_file(file), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
parse_atom(httr::content(r, as = "text", encoding = "UTF-8"))
}

Expand Down Expand Up @@ -134,7 +134,7 @@ delete_file <- function(id, key = Sys.getenv("DATAVERSE_KEY"), server = Sys.gete
u <- paste0(api_url(server, prefix="dvn/api/"), "data-deposit/v1.1/swordv2/edit-media/file/", id)
}
r <- httr::DELETE(u, httr::authenticate(key, ""), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
cont <- httr::content(r, as = "text", encoding = "UTF-8")
if (cont == "") {
return(TRUE)
Expand Down
4 changes: 2 additions & 2 deletions R/add_dataset_file.R
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ function(file,
body = list(file = httr::upload_file(file),
jsonData = jsondata),
encode = "multipart")
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
out <- jsonlite::fromJSON(httr::content(r, "text", encoding = "UTF-8"))
out$data$files$dataFile$id[1L]
}
Expand Down Expand Up @@ -97,6 +97,6 @@ function(file,
jsonData = jsondata
),
encode = "multipart")
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
structure(jsonlite::fromJSON(httr::content(r, as = "text", encoding = "UTF-8"), simplifyDataFrame = FALSE)$data$files[[1L]], class = "dataverse_file")
}
4 changes: 2 additions & 2 deletions R/create_dataset.R
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ create_dataset <- function(dataverse, body, key = Sys.getenv("DATAVERSE_KEY"), s
dataverse <- dataverse_id(dataverse, key = key, server = server, ...)
u <- paste0(api_url(server), "dataverses/", dataverse, "/datasets/")
r <- httr::POST(u, httr::add_headers("X-Dataverse-key" = key), body = body, encode = "json", ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
httr::content(r)
}

Expand All @@ -38,6 +38,6 @@ update_dataset <- function(dataset, body, key = Sys.getenv("DATAVERSE_KEY"), ser
dataset <- dataset_id(dataset, key = key, server = server, ...)
u <- paste0(api_url(server), "datasets/", dataset, "/versions/:draft")
r <- httr::PUT(u, httr::add_headers("X-Dataverse-key" = key), body = body, encode = "json", ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
httr::content(r, as = "text", encoding = "UTF-8")
}
2 changes: 1 addition & 1 deletion R/create_dataverse.R
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,6 @@ create_dataverse <- function(dataverse, key = Sys.getenv("DATAVERSE_KEY"), serve
u <- paste0(api_url(server), "dataverses/", dataverse)
}
r <- httr::POST(u, httr::add_headers("X-Dataverse-key" = key), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
httr::content(r, as = "text", encoding = "UTF-8")
}
2 changes: 1 addition & 1 deletion R/dataset_versions.R
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ dataset_versions <- function(dataset, key = Sys.getenv("DATAVERSE_KEY"), server
dataset <- dataset_id(dataset, key = key, server = server, ...)
u <- paste0(api_url(server), "datasets/", dataset, "/versions")
r <- httr::GET(u, httr::add_headers("X-Dataverse-key" = key), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
out <- httr::content(r, as = "text", encoding = "UTF-8")$data
lapply(out, function(x) {
x <- `class<-`(x, "dataverse_dataset_version")
Expand Down
4 changes: 2 additions & 2 deletions R/dataverse_metadata.R
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ dataverse_metadata <- function(dataverse, key = Sys.getenv("DATAVERSE_KEY"), ser
dataverse <- dataverse_id(dataverse, key = key, server = server, ...)
u <- paste0(api_url(server), "dataverses/", dataverse, "/metadatablocks")
r <- httr::GET(u, httr::add_headers("X-Dataverse-key" = key), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
jsonlite::fromJSON(httr::content(r, as = "text", encoding = "UTF-8"), simplifyDataFrame = FALSE)$data
}

Expand All @@ -38,6 +38,6 @@ set_dataverse_metadata <- function(dataverse, body, root = TRUE, key = Sys.geten
dataverse <- dataverse_id(dataverse, key = key, server = server, ...)
u <- paste0(api_url(server), "dataverses/", dataverse, "/metadatablocks/", tolower(as.character(root)))
r <- httr::POST(u, httr::add_headers("X-Dataverse-key" = key), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
httr::content(r, as = "text", encoding = "UTF-8")$data
}
2 changes: 1 addition & 1 deletion R/dataverse_search.R
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ function(...,

# execute request
r <- httr::GET(u, httr::add_headers("X-Dataverse-key" = key), query = query)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
out <- jsonlite::fromJSON(httr::content(r, as = "text", encoding = "UTF-8"))
if (isTRUE(verbose)) {
n_total <- ngettext(out$data$total_count, "result", "results")
Expand Down
2 changes: 1 addition & 1 deletion R/delete_dataset.R
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@ delete_dataset <- function(dataset, key = Sys.getenv("DATAVERSE_KEY"), server =
dataset <- dataset_id(dataset, key = key, server = server, ...)
u <- paste0(api_url(server), "datasets/", dataset, "/versions/:draft")
r <- httr::DELETE(u, httr::add_headers("X-Dataverse-key" = key), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
httr::content(r, as = "text", encoding = "UTF-8")
}
2 changes: 1 addition & 1 deletion R/delete_dataverse.R
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@ delete_dataverse <- function(dataverse, key = Sys.getenv("DATAVERSE_KEY"), serve
dataverse <- dataverse_id(dataverse, key = key, server = server, ...)
u <- paste0(api_url(server), "dataverses/", dataverse)
r <- httr::DELETE(u, httr::add_headers("X-Dataverse-key" = key), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
httr::content(r, as = "text", encoding = "UTF-8")
}
6 changes: 3 additions & 3 deletions R/get_dataset.R
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ get_dataset <- function(
u <- paste0(api_url(server), "datasets/", dataset)
}
r <- httr::GET(u, httr::add_headers("X-Dataverse-key" = key), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
parse_dataset(httr::content(r, as = "text", encoding = "UTF-8"))
}

Expand All @@ -84,7 +84,7 @@ dataset_metadata <- function(
}

r <- httr::GET(u, httr::add_headers("X-Dataverse-key" = key), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
out <- httr::content(r, as = "text", encoding = "UTF-8")
jsonlite::fromJSON(out)[["data"]]
}
Expand All @@ -101,7 +101,7 @@ dataset_files <- function(
dataset <- dataset_id(dataset, key = key, server = server, ...)
u <- paste0(api_url(server), "datasets/", dataset, "/versions/", version, "/files")
r <- httr::GET(u, httr::add_headers("X-Dataverse-key" = key), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
out <- jsonlite::fromJSON(httr::content(r, as = "text", encoding = "UTF-8"), simplifyDataFrame = FALSE)$data
structure(lapply(out, `class<-`, "dataverse_file"))
}
4 changes: 2 additions & 2 deletions R/get_dataverse.R
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ get_dataverse <- function(dataverse, key = Sys.getenv("DATAVERSE_KEY"), server =
}
u <- paste0(api_url(server), "dataverses/", dataverse)
r <- httr::GET(u, httr::add_headers("X-Dataverse-key" = key), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
out <- jsonlite::fromJSON(httr::content(r, as = "text", encoding = "UTF-8"))
structure(out$data, class = "dataverse")
}
Expand All @@ -56,7 +56,7 @@ dataverse_contents <- function(dataverse, key = Sys.getenv("DATAVERSE_KEY"), ser
dataverse <- dataverse_id(dataverse, key = key, server = server, ...)
u <- paste0(api_url(server), "dataverses/", dataverse, "/contents")
r <- httr::GET(u, httr::add_headers("X-Dataverse-key" = key), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
out <- jsonlite::fromJSON(httr::content(r, as = "text", encoding = "UTF-8"), simplifyDataFrame = FALSE)
structure(lapply(out$data, function(x) {
`class<-`(x, if (x$type == "dataset") "dataverse_dataset" else "dataverse")
Expand Down
2 changes: 1 addition & 1 deletion R/get_facets.R
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@ get_facets <- function(dataverse, key = Sys.getenv("DATAVERSE_KEY"), server = Sy
dataverse <- dataverse_id(dataverse, key = key, server = server, ...)
u <- paste0(api_url(server), "dataverses/", dataverse, "/facets")
r <- httr::GET(u, httr::add_headers("X-Dataverse-key" = key), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
jsonlite::fromJSON(httr::content(r, as = "text", encoding = "UTF-8"))$data
}
2 changes: 1 addition & 1 deletion R/get_file_by_id.R
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ get_file_by_id <- function(
u <- paste0(api_url(server), u_part, fileid)
r <- httr::GET(u, httr::add_headers("X-Dataverse-key" = key), query = query, ...)

httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
httr::content(r, as = "raw")
}

Expand Down
2 changes: 1 addition & 1 deletion R/get_file_metadata.R
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ get_file_metadata <-
}

r <- httr::GET(u, httr::add_headers("X-Dataverse-key" = key), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
out <- httr::content(r, as = "text", encoding = "UTF-8")
return(out)
}
Expand Down
14 changes: 7 additions & 7 deletions R/native_role_groups.R
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ create_group <- function(dataverse, alias, name, description, key = Sys.getenv("
dataverse <- dataverse_id(dataverse, key = key, server = server, ...)
u <- paste0(api_url(server), "dataverses/", dataverse, "/groups")
r <- httr::POST(u, httr::add_headers("X-Dataverse-key" = key), body = b, encode = "json", ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
j <- jsonlite::fromJSON(httr::content(r, as = "text", encoding = "UTF-8"))$data
j$dataverse <- dataverse
structure(j, class = "dataverse_group")
Expand Down Expand Up @@ -68,7 +68,7 @@ update_group <- function(group, name, description, dataverse, key = Sys.getenv("
u <- paste0(api_url(server), "dataverses/", dataverse, "/groups/", group)
}
r <- httr::PUT(u, httr::add_headers("X-Dataverse-key" = key), body = b, encode = "json", ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
j <- jsonlite::fromJSON(httr::content(r, as = "text", encoding = "UTF-8"))$data
j$dataverse <- dataverse
structure(j, class = "dataverse_group")
Expand All @@ -80,7 +80,7 @@ list_groups <- function(dataverse, key = Sys.getenv("DATAVERSE_KEY"), server = S
dataverse <- dataverse_id(dataverse, key = key, server = server, ...)
u <- paste0(api_url(server), "dataverses/", dataverse, "/groups")
r <- httr::GET(u, httr::add_headers("X-Dataverse-key" = key), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
j <- jsonlite::fromJSON(httr::content(r, as = "text", encoding = "UTF-8"), simplifyDataFrame = FALSE)$data
lapply(j, function(x) {
x$dataverse <- dataverse
Expand All @@ -100,7 +100,7 @@ get_group <- function(group, dataverse, key = Sys.getenv("DATAVERSE_KEY"), serve
u <- paste0(api_url(server), "dataverses/", dataverse, "/groups/", group)
}
r <- httr::GET(u, httr::add_headers("X-Dataverse-key" = key), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
j <- jsonlite::fromJSON(httr::content(r, as = "text", encoding = "UTF-8"))$data
j$dataverse <- dataverse
structure(j, class = "dataverse_group")
Expand All @@ -117,7 +117,7 @@ delete_group <- function(group, dataverse, key = Sys.getenv("DATAVERSE_KEY"), se
}
u <- paste0(api_url(server), "dataverses/", dataverse, "/groups/", group)
r <- httr::DELETE(u, httr::add_headers("X-Dataverse-key" = key), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
out <- jsonlite::fromJSON(httr::content(r, as = "text", encoding = "UTF-8"))
if (out$status == "OK") {
return(TRUE)
Expand Down Expand Up @@ -153,7 +153,7 @@ add_roles_to_group <- function(group, role, dataverse, key = Sys.getenv("DATAVER
}
u <- paste0(api_url(server), "dataverses/", dataverse, "/groups/", group, "/roleAssignees/", role)
r <- httr::PUT(u, httr::add_headers("X-Dataverse-key" = key), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
j <- jsonlite::fromJSON(httr::content(r, as = "text", encoding = "UTF-8"))$data
j
}
Expand All @@ -169,6 +169,6 @@ remove_role_from_group <- function(group, role, dataverse, key = Sys.getenv("DAT
}
u <- paste0(api_url(server), "dataverses/", dataverse, "/groups/", group, "/roleAssignees/", role)
r <- httr::DELETE(u, httr::add_headers("X-Dataverse-key" = key), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
httr::content(r, as = "text", encoding = "UTF-8")
}
10 changes: 5 additions & 5 deletions R/native_roles.R
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
get_role <- function(role, key = Sys.getenv("DATAVERSE_KEY"), server = Sys.getenv("DATAVERSE_SERVER"), ...) {
u <- paste0(api_url(server), "roles/", role)
r <- httr::GET(u, httr::add_headers("X-Dataverse-key" = key), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
j <- jsonlite::fromJSON(httr::content(r, as = "text", encoding = "UTF-8"))$data
j
}
Expand All @@ -32,7 +32,7 @@ get_role <- function(role, key = Sys.getenv("DATAVERSE_KEY"), server = Sys.geten
delete_role <- function(role, key = Sys.getenv("DATAVERSE_KEY"), server = Sys.getenv("DATAVERSE_SERVER"), ...) {
u <- paste0(api_url(server), "roles/", role)
r <- httr::DELETE(u, httr::add_headers("X-Dataverse-key" = key), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
j <- jsonlite::fromJSON(httr::content(r, as = "text", encoding = "UTF-8"))$data
j
}
Expand All @@ -44,13 +44,13 @@ list_roles <- function(dataverse, key = Sys.getenv("DATAVERSE_KEY"), server = Sy
dataverse <- dataverse_id(dataverse, key = key, server = server, ...)
u <- paste0(api_url(server), "dataverses/", dataverse, "/roles")
r <- httr::GET(u, httr::add_headers("X-Dataverse-key" = key), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
out <- jsonlite::fromJSON(httr::content(r, "text", encoding = "UTF-8"))$data
structure(lapply(out, `class<-`, "dataverse_role"))
} else {
u <- paste0(api_url(server), "admin/roles")
r <- httr::GET(u, httr::add_headers("X-Dataverse-key" = key), ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
out <- jsonlite::fromJSON(httr::content(r, as = "text", encoding = "UTF-8"))$data
structure(lapply(out, `class<-`, "dataverse_role"))
}
Expand All @@ -68,7 +68,7 @@ create_role <- function(dataverse, alias, name, description, permissions,
}
u <- paste0(api_url(server), "dataverses/", dataverse, "/roles")
r <- httr::POST(u, httr::add_headers("X-Dataverse-key" = key), body = b, encode = "json", ...)
httr::stop_for_status(r)
httr::stop_for_status(r, task = httr::content(r)$message)
j <- jsonlite::fromJSON(httr::content(r, as = "text", encoding = "UTF-8"))$data
structure(j, class = "dataverse_role")
}
Loading