ZenodoManager
ZenodoManager
R6Class
object.
Object of R6Class
for modelling an ZenodoManager
Main user class to be used with zen4R
zen4R::zen4RLogger
-> ZenodoManager
sandbox
Zenodo manager sandbox status, TRUE
if we interact with Sandbox infra
anonymous
Zenodo manager anonymous status, TRUE
when no token is specified
new()
initializes the Zenodo Manager
ZenodoManager$new(
url = "https://zenodo.org/api",
token = zenodo_pat(),
sandbox = FALSE,
logger = NULL,
keyring_backend = "env"
)
url
Zenodo API URL. By default, the url is set to "https://zenodo.org/api". For tests, the Zenodo sandbox API URL can be used: https://sandbox.zenodo.org/api
token
the user token. By default an attempt will be made to retrieve token using zenodo_pat
sandbox
Indicates if the Zenodo sandbox platform should be used. Default is FALSE
logger
logger type. The logger can be either NULL, "INFO" (with minimum logs), or "DEBUG" (for complete curl http calls logs)
keyring_backend
The keyring backend used to store user token. The keyring_backend
can be set to use a different backend for storing the Zenodo token with keyring (Default value is 'env').
getLanguages()
Get Languages supported by Zenodo.
getLicenses()
Get Licenses supported by Zenodo.
getResourceTypes()
Get Resource types supported by Zenodo.
getCommunities()
Get Communities supported by Zenodo.
pretty
Prettify the output. By default the argument pretty
is set to
TRUE
which will returns the list of communities as data.frame
.
Set pretty = FALSE
to get the raw list of communities
q
an ElasticSearch compliant query, object of class character
. Default is emtpy.
Note that the Zenodo API restrains a maximum number of 10,000 records to be retrieved. Consequently,
not all communities can be listed from Zenodo, a query has to be specified.
size
number of communities to be returned. By default equal to 500
submitRecordToCommunities()
Submit a published record to one or more community
ZenodoManager$submitRecordToCommunities(
record,
communities = list(),
message = NULL
)
record
an object of class ZenodoRecord
communities
communities to which the record will be submitted
message
message to send to the community curator(s), either a text or a named list for each community in case a community-specific message should be sent
removeRecordFromCommunities()
Remove a record from one or more community
ZenodoManager$removeRecordFromCommunities(record, communities = list())
record
an object of class ZenodoRecord
communities
communities to which the record will be submitted
createReviewRequest()
Creates a record review request in a community
record
an object of class ZenodoRecord
community
a community to which the record is submitted for review and publication
getReviewRequest()
Get a record review request
record
an object of class ZenodoRecord
deleteReviewRequest()
Deletes a review request
record
an object of class ZenodoRecord
submitRecordForReview()
Submits a record for review. Prior to this submission, a community
has to be selected for a record. This is done by using the method createReviewRequest(record, community)
.
getGrants()
Get Grants supported by Zenodo. DEPRECATED: replaced by getAwards
q
an ElasticSearch compliant query, object of class character
. Default is emtpy.
Note that the Zenodo API restrains a maximum number of 10,000 records to be retrieved. Consequently,
not all grants can be listed from Zenodo, a query has to be specified.
pretty
Prettify the output. By default the argument pretty
is set to
TRUE
which will returns the list of grants as data.frame
.
Set pretty = FALSE
to get the raw list of grants
size
number of grants to be returned. By default equal to 500.
getAwards()
Get Awards supported by Zenodo.
q
an ElasticSearch compliant query, object of class character
. Default is emtpy.
Note that the Zenodo API restrains a maximum number of 10,000 records to be retrieved. Consequently,
not all awards can be listed from Zenodo, a query has to be specified.
pretty
Prettify the output. By default the argument pretty
is set to
TRUE
which will returns the list of awards as data.frame
.
Set pretty = FALSE
to get the raw list of awards
size
number of awards to be returned. By default equal to 500.
getGrantsByName()
Get grants by name. DEPRECATED: replaced by getAwardByName
getAwardsByName()
Get awards by name.
getAffiliations()
Get Affiliations supported by Zenodo.
q
an ElasticSearch compliant query, object of class character
. Default is emtpy.
Note that the Zenodo API restrains a maximum number of 10,000 records to be retrieved. Consequently,
not all affiliations can be listed from Zenodo, a query has to be specified.
pretty
Prettify the output. By default the argument pretty
is set to
TRUE
which will returns the list of affiliations as data.frame
.
Set pretty = FALSE
to get the raw list of affiliations
size
number of affiliations to be returned. By default equal to 500.
getAffiliationByName()
Get affiliations by name.
getFunders()
Get Funders supported by Zenodo based on a query.
q
an ElasticSearch compliant query, object of class character
. Default is emtpy.
Note that the Zenodo API restrains a maximum number of 10,000 records to be retrieved. Consequently,
not all funders can be listed from Zenodo, a query has to be specified.
pretty
Prettify the output. By default the argument pretty
is set to
TRUE
which will returns the list of funders as data.frame
.
Set pretty = FALSE
to get the raw list of funders
size
number of funders to be returned. By default equal to 500
getFundersByName()
Get funders by name.
getDepositions()
Get the list of Zenodo records deposited in your Zenodo workspace (user records). By default
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 q
allows to specify an ElasticSearch-compliant query to filter
depositions (default query is empty to retrieve all records). The argument all_versions
, if set
to TRUE allows to get all versions of records as part of the depositions list. The argument exact
specifies that an exact matching is wished, in which case paginated search will be disabled (only the first
search page will be returned).
Examples of ElasticSearch queries for Zenodo can be found at https://help.zenodo.org/guides/search/.
ZenodoManager$getDepositions(
q = "",
size = 10,
all_versions = FALSE,
exact = TRUE,
quiet = FALSE
)
q
Elastic-Search-compliant query, as object of class character
. Default is ""
size
number of depositions to be retrieved per request (paginated). Default is 10
all_versions
object of class logical
indicating if all versions of deposits have to be retrieved. Default is FALSE
exact
object of class logical
indicating if exact matching has to be applied. Default is TRUE
quiet
object of class logical
indicating if logs have to skipped. Default is FALSE
getDepositionByConceptDOI()
Get a Zenodo deposition record by concept DOI (generic DOI common to all deposition record versions).
depositRecord()
Deposits a record on Zenodo.
depositRecordVersion()
Deposits a record version on Zenodo.
ZenodoManager$depositRecordVersion(
record,
delete_latest_files = TRUE,
files = list(),
publish = FALSE
)
record
the record version to deposit, object of class ZenodoRecord
delete_latest_files
object of class logical
indicating if latest files have to be deleted. Default is TRUE
files
a list of files to be uploaded with the new record version
publish
object of class logical
indicating if record has to be published (default FALSE
)
deleteRecords()
Deletes all Zenodo deposited (unpublished) records.
The parameter 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
https://help.zenodo.org/guides/search/.
createEmptyRecord()
Creates an empty record in the Zenodo deposit. Returns the record
newly created in Zenodo, as an object of class ZenodoRecord
with an
assigned identifier.
editRecord()
Unlocks a record already submitted. Required to edit metadata of a Zenodo record already published.
discardChanges()
Discards changes on a Zenodo record. Deleting a draft for an unpublished record will remove the draft and associated files from the system. Deleting a draft for a published record will remove the draft but not the published record.
startFileUpload()
Start a file upload. The method will create a key for the file to be uploaded
This method is essentially for internal purpose, and is called directly in uploadFile
for user convenience and for backward compatibility with the legacy Zenodo API.
completeFileUpload()
Completes a file upload. The method will complete a file upload through a commit operation
This method is essentially for internal purpose, and is called directly in uploadFile
for user convenience and for backward compatibility with the legacy Zenodo API.
uploadFile()
Uploads a file to a Zenodo record. With the new Zenodo Invenio RDM API, this method
internally calls startFileUpload
to create a file record (with a filename key) at start, followed
by the actual file content upload. At this stage, the file upload is in "pending" status. At the end,
the function calls completeFileUpload
to commit the file which status becomes "completed".
deleteFile()
Deletes a file for a record. With the new Zenodo Invenio RDM API, if a file is deleted although its status was pending, only the upload content is deleted, and the file upload record (identified by a filename key) is kept. If the status was completed (with a file commit), the file record is deleted.
getRecords()
Get the list of Zenodo records. By defaut the list of records will be returned by
page with a size of 10 results per page (default size of the Zenodo API). The parameter
q
allows to specify an ElasticSearch-compliant query to filter depositions
(default query is empty to retrieve all records). The argument all_versions
,
if set to TRUE allows to get all versions of records as part of the depositions list.
The argument exact
specifies that an exact matching is wished, in which case
paginated search will be disabled (only the first search page will be returned).
Examples of ElasticSearch queries for Zenodo can be found at https://help.zenodo.org/guides/search/.
q
Elastic-Search-compliant query, as object of class character
. Default is ""
size
number of records to be retrieved per request (paginated). Default is 10
all_versions
object of class logical
indicating if all versions of records have to be retrieved. Default is FALSE
exact
object of class logical
indicating if exact matching has to be applied. Default is TRUE
quiet
object of class logical
indicating if logs have to skipped. Default is FALSE
getRequests()
Search requests
q
Search query used to filter results based on ElasticSearch's query string syntax. e.g. https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#query-string-syntax
sort
Sort search results. Built-in options are "bestmatch", "name", "newest", "oldest" (default: "bestmatch" or "newest").
size
number of records to be retrieved per request (paginated). Default is 10
isActionableRequest()
Checks if the request can be subject to an operation (accept, decline, cancel) depending on its status. To be subject to an operation, a request should not be closed or expired
# \dontrun{
ZENODO <- ZenodoManager$new(
url = "https://sandbox.zenodo.org/api",
token = "<your_token>",
logger = "INFO"
)
#create (deposit) an empty record
newRec <- ZENODO$createEmptyRecord()
#> ✖ Error while depositing record: Referer checking failed - no Referer.
#> [zen4R][ERROR] ZenodoManager - Error while depositing record: Referer checking failed - no Referer.
#create and fill a local (not yet deposited) record
myrec <- ZenodoRecord$new()
myrec$setTitle("my R package")
myrec$setDescription("A description of my R package")
myrec$setUploadType("software")
#> [zen4R][WARN] ZenodoRecord - Method 'setUploadType' is deprecated, please use 'setResourceType'
myrec$addCreator(
firstname = "John", lastname = "Doe",
affiliation = "Independent", orcid = "0000-0000-0000-0000"
)
#> ✖ Error while fetching affiliation 'Independent': Not found.
#> [zen4R][WARN] ZenodoRecord - Affiliation with id or name 'Independent' doesn't exist in Zenodo
myrec$setLicense("mit")
#> ✔ Successfully fetched license 'mit'
#> [1] TRUE
myrec$setAccessRight("open")
#> Error in eval(expr, envir, enclos): attempt to apply non-function
myrec$setDOI("mydoi") #use this method if your DOI has been assigned elsewhere, outside Zenodo
#deposit the record
myrec <- ZENODO$depositRecord(myrec)
#> ✖ Error while depositing record: Referer checking failed - no Referer.
#> [zen4R][ERROR] ZenodoManager - Error while depositing record: Referer checking failed - no Referer.
#publish a record (with caution!!)
#this method will PUBLISH the deposition done earlier
ZENODO$publishRecord(myrec$id)
#> ✖
#> $message
#> [1] "Referer checking failed - no Referer."
#>
#> $status
#> [1] 400
#>
#With even more caution the publication can be done with a shortcut argument at deposit time
ZENODO$depositRecord(myrec, publish = TRUE)
#> ✖ Error while depositing record: Referer checking failed - no Referer.
#> [zen4R][ERROR] ZenodoManager - Error while depositing record: Referer checking failed - no Referer.
#> ✖
#> $message
#> [1] "Referer checking failed - no Referer."
#>
#> $status
#> [1] 400
#>
#delete a record (by id)
#this methods only works for unpublished deposits
#(if a record is published, it cannot be deleted anymore!)
ZENODO$deleteRecord(myrec$id)
#> ✖
#> [1] FALSE
#HOW TO UPLOAD FILES to a deposit
#upload a file
ZENODO$uploadFile("path/to/your/file", record = myrec)
#> !
#> [zen4R][INFO] ZenodoManager - Start upload procedure for file 'path/to/your/file'
#> Error in out$message: $ operator is invalid for atomic vectors
#list files
zen_files <- ZENODO$getFiles(myrec$id)
#> [zen4R][INFO] ZenodoRequest - Fetching https://sandbox.zenodo.org/api/
#> ✖
#delete a file?
ZENODO$deleteFile(myrec$id, zen_files[[1]]$filename)
#> Error in zen_files[[1]]$filename: $ operator is invalid for atomic vectors
# }