Skip to content
Snippets Groups Projects
Commit f1a255cc authored by LouisGendron's avatar LouisGendron
Browse files

Added get_dataset_hash function

parent 12c42c6d
No related branches found
No related tags found
1 merge request!1Resolve "Add function to fetch hash for files in dataset"
......@@ -12,6 +12,10 @@
#' ### IRICData class
#' ###
require(jsonlite)
require(data.table)
require(rvest)
IRICData <- setClass(
# Set the name for the class
"IRICData",
......@@ -124,7 +128,7 @@ setMethod(
f='get_file_metadata',
signature='IRICData',
definition=function(object, session, id_file) {
resp = rvest::jump_to(session, paste(object@url,'secure/datafiles/json/metadata', file_id, sep='/'))
resp = rvest::jump_to(session, paste(object@url,'secure/datafiles/json/metadata', id_file, sep='/'))
metadata = fromJSON(rawToChar(resp$response$content))
return(metadata)
}
......@@ -142,8 +146,50 @@ setMethod(
f='get_file_annotation',
signature='IRICData',
definition=function(object, session, id_file) {
resp = rvest::jump_to(session, paste(object@url,'secure/datafiles/json/annotation', file_id, sep='/'))
resp = rvest::jump_to(session, paste(object@url,'secure/datafiles/json/annotation', id_file, sep='/'))
metadata = fromJSON(rawToChar(resp$response$content))
return(metadata)
}
)
#Return a data.table of file_name, file_id and hash for every files in dataset
setGeneric(
name='get_dataset_hash',
def=function(object, session, url, dataset_id){
standardGeneric('get_dataset_hash')
}
)
setMethod(
f='get_dataset_hash',
signature='IRICData',
definition=function(object, session, url, dataset_id){
ds_details <- data.table()
#Fetch data list
resp = rvest::jump_to(session, paste(url_,'secure/dataset', dataset_id, 'file-list',sep='/'))
files_to_DL = unlist(strsplit(rawToChar(resp$response$content), "\n"))
#Get metadata as list of JSON
metas <- lapply(files_to_DL, function(download_link){
tmp <- tail(strsplit(download_link,'/')[[1]], n=2)
if (tmp[1] == 'download'){ #annotation files will start with "annotation" isntead of "download"
file_id <- tmp[2]
resp <- rvest::jump_to(session, paste(url_,'secure/datafiles/json/metadata', file_id, sep='/'))
metadata <- fromJSON(rawToChar(resp$response$content))
metadata$file_id <- file_id
return(metadata)
}
})
for (ix in 1:length(metas)){
if (is.null(metas[ix][[1]])){
next
}else{
ds_details <- rbind(ds_details, data.table(file_name = metas[[ix]]$filename,
file_id = metas[[ix]]$file_id, hash = metas[[ix]]$hash))
}
}
return(ds_details)
}
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment