Skip to content

Commit

Permalink
#20 add all_versions param
Browse files Browse the repository at this point in the history
  • Loading branch information
eblondel committed Jul 30, 2019
1 parent eb11048 commit dd28a5c
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 12 deletions.
21 changes: 13 additions & 8 deletions R/ZenodoManager.R
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,14 @@
#' \item{\code{getFunderById(id)}}{
#' Get funder by Id
#' }
#' \item{\code{getDepositions(q, size)}}{
#' \item{\code{getDepositions(q, size, all_versions)}}{
#' Get the list of Zenodo records deposited in your Zenodo workspace. By defaut
#' the list of depositions will be returned by page with a size of 10 results per
#' page (default size of the Zenodo API). The parameter \code{q} allows to specify
#' an ElasticSearch-compliant query to filter depositions (default query is empty
#' to retrieve all records). Examples of ElasticSearch queries for Zenodo can be
#' found at \href{http://help.zenodo.org/guides/search/}{http://help.zenodo.org/guides/search/}.
#' to retrieve all records). The argument \code{all_versions}, if set to TRUE allows
#' to get all versions of records as part of the depositions list. Examples of
#' ElasticSearch queries for Zenodo can be found at \href{http://help.zenodo.org/guides/search/}{http://help.zenodo.org/guides/search/}.
#' }
#' \item{\code{getDepositionByConceptDOI(conceptdoi)}}{
#' Get a Zenodo deposition record by concept DOI (generic DOI common to all deposition record versions)
Expand Down Expand Up @@ -456,9 +457,11 @@ ZenodoManager <- R6Class("ZenodoManager",
#------------------------------------------------------------------------------------------

#getDepositions
getDepositions = function(q = "", size = 10){
getDepositions = function(q = "", size = 10, all_versions = FALSE){
page <- 1
zenReq <- ZenodoRequest$new(private$url, "GET", sprintf("deposit/depositions?q=%s&size=%s&page=%s", q, size, page),
req <- sprintf("deposit/depositions?q=%s&size=%s&page=%s", q, size, page)
if(all_versions) req <- paste0(req, "&all_versions=1")
zenReq <- ZenodoRequest$new(private$url, "GET", req,
token = private$token, logger = self$loggerType)
zenReq$execute()
out <- NULL
Expand All @@ -470,7 +473,9 @@ ZenodoManager <- R6Class("ZenodoManager",
self$INFO(sprintf("Successfuly fetched list of depositions - page %s", page))
#next
page <- page+1
zenReq <- ZenodoRequest$new(private$url, "GET", sprintf("deposit/depositions?q=%s&size=%s&page=%s", q, size, page),
nextreq <- sprintf("deposit/depositions?q=%s&size=%s&page=%s", q, size, page)
if(all_versions) nextreq <- paste0(nextreq, "&all_versions=1")
zenReq <- ZenodoRequest$new(private$url, "GET", nextreq,
token = private$token, logger = self$loggerType)
zenReq$execute()
resp <- zenReq$getResponse()
Expand Down Expand Up @@ -516,7 +521,7 @@ ZenodoManager <- R6Class("ZenodoManager",
#getDepositionByDOI
getDepositionByDOI = function(doi){
query <- sprintf("doi:%s", gsub("/", "//", doi))
result <- self$getDepositions(q = query)
result <- self$getDepositions(q = query, all_versions = TRUE)
if(length(result)>0){
result <- result[[1]]
if(result$doi == doi){
Expand All @@ -542,7 +547,7 @@ ZenodoManager <- R6Class("ZenodoManager",
#getDepositionbyId
getDepositionById = function(recid){
query <- sprintf("recid:%s", recid)
result <- self$getDepositions(q = query)
result <- self$getDepositions(q = query, all_versions = TRUE)
if(length(result)>0){
result <- result[[1]]
if(result$id == recid){
Expand Down
7 changes: 4 additions & 3 deletions man/ZenodoManager.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion tests/testthat/test_records.R
Original file line number Diff line number Diff line change
Expand Up @@ -147,5 +147,5 @@ test_that("versions & DOIs",{
expect_is(versions, "data.frame")

rec <- ZENODO$getDepositionByDOI("10.5072/zenodo.349741")
expect_null(rec)
expect_is(rec, "ZenodoRecord")
})

0 comments on commit dd28a5c

Please sign in to comment.