1 source("./R/RESTService.R")
2 source("./R/HttpRequest.R")
3 source("./R/HttpParser.R")
7 #' All Arvados logic is inside this class
9 #' @field token Token represents user authentification token.
10 #' @field host Host represents server name we wish to connect to.
11 #' @examples arv = Arvados$new("token", "host_name")
13 Arvados <- R6::R6Class(
19 initialize = function(authToken = NULL, hostName = NULL)
21 if(!is.null(hostName))
22 Sys.setenv(ARVADOS_API_HOST = hostName)
24 if(!is.null(authToken))
25 Sys.setenv(ARVADOS_API_TOKEN = authToken)
27 hostName <- Sys.getenv("ARVADOS_API_HOST");
28 token <- Sys.getenv("ARVADOS_API_TOKEN");
30 if(hostName == "" | token == "")
31 stop(paste0("Please provide host name and authentification token",
32 " or set ARVADOS_API_HOST and ARVADOS_API_TOKEN",
33 " environment variables."))
35 private$REST <- RESTService$new(token, hostName, NULL,
36 HttpRequest$new(), HttpParser$new())
37 private$token <- private$REST$token
38 private$host <- private$REST$hostName
41 getToken = function() private$REST$token,
42 getHostName = function() private$REST$hostName,
43 getWebDavHostName = function() private$REST$getWebDavHostName(),
44 getRESTService = function() private$REST,
45 setRESTService = function(newRESTService) private$REST <- newRESTService,
47 getCollection = function(uuid)
49 collection <- private$REST$getResource("collections", uuid)
53 listCollections = function(filters = NULL, limit = 100, offset = 0)
56 names(filters) <- c("collection")
58 collections <- private$REST$listResources("collections", filters,
63 listAllCollections = function(filters = NULL)
66 names(filters) <- c("collection")
68 collectionURL <- paste0(private$host, "collections")
69 allCollection <- private$REST$fetchAllItems(collectionURL, filters)
73 deleteCollection = function(uuid)
75 removedCollection <- private$REST$deleteResource("collections", uuid)
79 updateCollection = function(uuid, newContent)
82 names(body) <- c("collection")
83 body$collection <- newContent
85 updatedCollection <- private$REST$updateResource("collections",
90 createCollection = function(content)
93 names(body) <- c("collection")
94 body$collection <- content
96 newCollection <- private$REST$createResource("collections", body)
100 getProject = function(uuid)
102 project <- private$REST$getResource("groups", uuid)
106 createProject = function(content)
109 names(body) <- c("group")
110 body$group <- c("group_class" = "project", content)
112 newProject <- private$REST$createResource("groups", body)
116 updateProject = function(uuid, newContent)
119 names(body) <- c("group")
120 body$group <- newContent
122 updatedProject <- private$REST$updateResource("groups",
127 listProjects = function(filters = NULL, limit = 100, offset = 0)
129 if(!is.null(filters))
130 names(filters) <- c("groups")
132 filters[[length(filters) + 1]] <- list("group_class", "=", "project")
134 projects <- private$REST$listResources("groups", filters,
139 listAllProjects = function(filters = NULL)
141 if(!is.null(filters))
142 names(filters) <- c("groups")
144 filters[[length(filters) + 1]] <- list("group_class", "=", "project")
146 projectURL <- paste0(private$host, "groups")
148 result <- private$REST$fetchAllItems(projectURL, filters)
152 deleteProject = function(uuid)
154 removedProject <- private$REST$deleteResource("groups", uuid)
169 #' @export print.Arvados
170 print.Arvados = function(arvados)
172 cat(paste0("Type: ", "\"", "Arvados", "\""), sep = "\n")
173 cat(paste0("Host: ", "\"", arvados$getHostName(), "\""), sep = "\n")
174 cat(paste0("Token: ", "\"", arvados$getToken(), "\"") , sep = "\n")