Skip to content

Commit 7df5bc3

Browse files
authored
Merge pull request #129 from JBGruber/master
Implement get_url() and return_url = TRUE argument in get_file() (#128)
2 parents 2c792b1 + 369b5b7 commit 7df5bc3

File tree

11 files changed

+306
-5
lines changed

11 files changed

+306
-5
lines changed

DESCRIPTION

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Package: dataverse
2-
Version: 0.3.13
2+
Version: 0.3.13.9000
33
Title: Client for Dataverse 4+ Repositories
44
Authors@R:
55
c(person(given = "Shiro",
@@ -32,7 +32,12 @@ Authors@R:
3232
role = "ctb"),
3333
person(given = "Edward",
3434
family = "Jee",
35-
role = "ctb"))
35+
role = "ctb"),
36+
person(given = "Johannes",
37+
family = "Gruber",
38+
role = c("ctb"),
39+
email = "JohannesB.Gruber@gmail.com",
40+
comment = c(ORCID = "0000-0001-9177-1772")))
3641
Imports:
3742
checkmate,
3843
httr,

NAMESPACE

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ export(get_file_by_doi)
3838
export(get_file_by_id)
3939
export(get_file_by_name)
4040
export(get_file_metadata)
41+
export(get_url)
42+
export(get_url_by_doi)
43+
export(get_url_by_id)
44+
export(get_url_by_name)
4145
export(get_user_key)
4246
export(initiate_sword_dataset)
4347
export(list_datasets)

NEWS.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
# dataverse
22

3-
# 0.3.13.9999
3+
# CHANGES in dataverse 0.3.14
44

5+
* `get_file_by_*()` can now return the download URL to be used in external functions or programs, useful for large files (#128)
56
* Improve recommendation for rdata loading (#107)
67

78
# CHANGES in dataverse 0.3.12 and 0.3.13

R/get_dataframe.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ get_dataframe_by_id <- function(
149149
}
150150

151151
# READ raw data
152-
raw <- get_file(file = fileid, original = original, ...)
152+
raw <- get_file(file = fileid, original = original, return_url = FALSE, ...)
153153

154154
# save to temp and then read it in with supplied function
155155
if (!is.null(.f)) {

R/get_file.R

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ get_file <- function(
8585
dataset = NULL,
8686
format = c("original", "bundle"),
8787
vars = NULL,
88+
return_url = FALSE,
8889
key = Sys.getenv("DATAVERSE_KEY"),
8990
server = Sys.getenv("DATAVERSE_SERVER"),
9091
original = TRUE,
@@ -124,6 +125,7 @@ get_file <- function(
124125
key = key,
125126
server = server,
126127
original = original,
128+
return_url = return_url,
127129
...
128130
)
129131
}
@@ -141,13 +143,15 @@ get_file <- function(
141143
#' @param filename Filename of the dataset, with file extension as shown in Dataverse
142144
#' (for example, if nlsw88.dta was the original but is displayed as the ingested
143145
#' nlsw88.tab, use the ingested version.)
146+
#' @param return_url Instead of downloading the file, just return the download link.
144147
#'
145148
#' @export
146149
get_file_by_name <- function(
147150
filename,
148151
dataset,
149152
format = c("original", "bundle"),
150153
vars = NULL,
154+
return_url = FALSE,
151155
key = Sys.getenv("DATAVERSE_KEY"),
152156
server = Sys.getenv("DATAVERSE_SERVER"),
153157
original = TRUE,
@@ -171,6 +175,7 @@ get_file_by_name <- function(
171175
key = key,
172176
server = server,
173177
original = original,
178+
return_url = return_url,
174179
...
175180
)
176181
}

R/get_file_by_id.R

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#' @param progress Whether to show a progress bar of the download.
99
#' If not specified, will be set to `TRUE` for a file larger than 100MB. To fix
1010
#' a value, set `FALSE` or `TRUE`.
11+
#' @param return_url Instead of downloading the file, just return the download link.
1112
#'
1213
#' @export
1314
get_file_by_id <- function(
@@ -17,6 +18,7 @@ get_file_by_id <- function(
1718
vars = NULL,
1819
original = TRUE,
1920
progress = NULL,
21+
return_url = FALSE,
2022
key = Sys.getenv("DATAVERSE_KEY"),
2123
server = Sys.getenv("DATAVERSE_SERVER"),
2224
...
@@ -92,7 +94,9 @@ get_file_by_id <- function(
9294

9395
# If not bundle, request single file in non-bundle format ----
9496
u <- paste0(api_url(server), u_part, fileid)
95-
97+
if (return_url) {
98+
return(httr::modify_url(u, query = query))
99+
}
96100
if (isFALSE(progress))
97101
r <- httr::GET(u, httr::add_headers("X-Dataverse-key" = key), query = query, ...)
98102

@@ -117,6 +121,7 @@ get_file_by_doi <- function(
117121
format = c("original", "bundle"),
118122
vars = NULL,
119123
original = TRUE,
124+
return_url = FALSE,
120125
key = Sys.getenv("DATAVERSE_KEY"),
121126
server = Sys.getenv("DATAVERSE_SERVER"),
122127
...
@@ -129,6 +134,7 @@ get_file_by_doi <- function(
129134
key = key,
130135
server = server,
131136
original = original,
137+
return_url = return_url,
132138
...
133139
)
134140
}

R/get_url.R

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
#' @title Get Dataverse file download URL
2+
#'
3+
#' @description Get URL. `get_url_*` functions return a download URL as a string
4+
#' that can be then used in outside functions such as `curl::curl_download()`.
5+
#'
6+
#' @inheritParams get_file
7+
#' @name URLs
8+
#' @export
9+
#' @examples \dontrun{
10+
#' # get URLs
11+
#' get_url_by_name(
12+
#' filename = "nlsw88.tab",
13+
#' dataset = "10.70122/FK2/PPIAXE",
14+
#' server = "demo.dataverse.org"
15+
#' )
16+
#' # https://demo.dataverse.org/api/access/datafile/1734017?format=original
17+
#'
18+
#' # For ingested, tab-delimited files
19+
#' get_url_by_name(
20+
#' filename = "nlsw88.tab",
21+
#' dataset = "10.70122/FK2/PPIAXE",
22+
#' original = FALSE,
23+
#' server = "demo.dataverse.org"
24+
#' )
25+
#' # https://demo.dataverse.org/api/access/datafile/1734017
26+
#'
27+
#' # To download to local directory
28+
#' curl::curl_download(
29+
#' "https://demo.dataverse.org/api/access/datafile/1734017?format=original",
30+
#' destfile = "nlsw88.dta")
31+
#' }
32+
get_url <- function(
33+
file,
34+
dataset = NULL,
35+
format = c("original", "bundle"),
36+
key = Sys.getenv("DATAVERSE_KEY"),
37+
server = Sys.getenv("DATAVERSE_SERVER"),
38+
original = TRUE,
39+
...) {
40+
41+
get_file(
42+
fileid = file,
43+
dataset = dataset,
44+
format = format,
45+
key = key,
46+
server = server,
47+
return_url = TRUE,
48+
original = original,
49+
...
50+
)
51+
}
52+
53+
#' @rdname URLs
54+
#' @export
55+
get_url_by_name <- function(
56+
filename,
57+
dataset,
58+
format = c("original", "bundle"),
59+
key = Sys.getenv("DATAVERSE_KEY"),
60+
server = Sys.getenv("DATAVERSE_SERVER"),
61+
original = TRUE,
62+
...
63+
) {
64+
format <- match.arg(format)
65+
66+
get_file_by_name(
67+
filename,
68+
dataset,
69+
format = format,
70+
key = key,
71+
server = server,
72+
original = original,
73+
return_url = TRUE,
74+
...
75+
)
76+
}
77+
78+
#' @rdname URLs
79+
#' @export
80+
get_url_by_id <- function(
81+
fileid,
82+
dataset = NULL,
83+
format = c("original", "bundle"),
84+
key = Sys.getenv("DATAVERSE_KEY"),
85+
server = Sys.getenv("DATAVERSE_SERVER"),
86+
original = TRUE,
87+
...) {
88+
89+
format <- match.arg(format)
90+
get_file_by_id(
91+
fileid,
92+
dataset = NULL,
93+
format = c("original", "bundle"),
94+
key = key,
95+
server = server,
96+
original = original,
97+
return_url = TRUE,
98+
...
99+
)
100+
}
101+
102+
#' @rdname URLs
103+
#' @export
104+
get_url_by_doi <- function(
105+
filedoi,
106+
dataset = NULL,
107+
format = c("original", "bundle"),
108+
key = Sys.getenv("DATAVERSE_KEY"),
109+
server = Sys.getenv("DATAVERSE_SERVER"),
110+
original = TRUE,
111+
...) {
112+
113+
format <- match.arg(format)
114+
get_file_by_doi(
115+
filedoi,
116+
dataset = NULL,
117+
format = c("original", "bundle"),
118+
key = key,
119+
server = server,
120+
original = original,
121+
return_url = TRUE,
122+
...
123+
)
124+
}

man/URLs.Rd

Lines changed: 130 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)