1 source("./R/HttpRequest.R")
2 source("./R/HttpParser.R")
6 #' All Arvados logic is inside this class
8 #' @field token Token represents user authentification token.
9 #' @field host Host represents server name we wish to connect to.
10 #' @examples arv = Arvados$new("token", "host_name")
12 Arvados <- R6::R6Class(
18 initialize = function(auth_token = NULL, host_name = NULL)
20 if(!is.null(host_name))
21 Sys.setenv(ARVADOS_API_HOST = host_name)
23 if(!is.null(auth_token))
24 Sys.setenv(ARVADOS_API_TOKEN = auth_token)
26 host <- Sys.getenv("ARVADOS_API_HOST");
27 token <- Sys.getenv("ARVADOS_API_TOKEN");
29 if(host == "" | token == "")
30 stop("Please provide host name and authentification token or set ARVADOS_API_HOST and ARVADOS_API_TOKEN environmental variables.")
32 discoveryDocumentURL <- paste0("https://", host, "/discovery/v1/apis/arvados/v1/rest")
35 host <- paste0("https://", host, "/arvados/", version, "/")
37 private$http <- HttpRequest$new()
38 private$httpParser <- HttpParser$new()
39 private$token <- token
42 headers <- list(Authorization = paste("OAuth2", private$token))
44 serverResponse <- private$http$GET(discoveryDocumentURL, headers)
46 discoveryDocument <- private$httpParser$parseJSONResponse(serverResponse)
47 private$webDavHostName <- discoveryDocument$keepWebServiceUrl
48 print(private$webDavHostName)
51 getToken = function() private$token,
52 getHostName = function() private$host,
54 #Todo(Fudo): Hardcoded credentials to WebDAV server. Remove them later
55 getWebDavHostName = function() private$webDavHostName,
57 getCollection = function(uuid)
59 collectionURL <- paste0(private$host, "collections/", uuid)
60 headers <- list(Authorization = paste("OAuth2", private$token))
62 serverResponse <- private$http$GET(collectionURL, headers)
64 collection <- private$httpParser$parseJSONResponse(serverResponse)
66 if(!is.null(collection$errors))
67 stop(collection$errors)
72 listCollections = function(filters = NULL, limit = 100, offset = 0)
74 collectionURL <- paste0(private$host, "collections")
75 headers <- list(Authorization = paste("OAuth2", private$token))
77 serverResponse <- private$http$GET(collectionURL, headers, NULL, filters, limit, offset)
79 collection <- private$httpParser$parseJSONResponse(serverResponse)
81 if(!is.null(collection$errors))
82 stop(collection$errors)
87 deleteCollection = function(uuid)
89 collectionURL <- paste0(private$host, "collections/", uuid)
90 headers <- list("Authorization" = paste("OAuth2", private$token),
91 "Content-Type" = "application/json")
93 serverResponse <- private$http$DELETE(collectionURL, headers)
95 collection <- private$httpParser$parseJSONResponse(serverResponse)
97 if(!is.null(collection$errors))
98 stop(collection$errors)
103 updateCollection = function(uuid, body)
105 collectionURL <- paste0(private$host, "collections/", uuid)
106 headers <- list("Authorization" = paste("OAuth2", private$token),
107 "Content-Type" = "application/json")
109 body <- jsonlite::toJSON(body, auto_unbox = T)
111 serverResponse <- private$http$PUT(collectionURL, headers, body)
113 collection <- private$httpParser$parseJSONResponse(serverResponse)
115 if(!is.null(collection$errors))
116 stop(collection$errors)
121 createCollection = function(body)
123 collectionURL <- paste0(private$host, "collections")
124 headers <- list("Authorization" = paste("OAuth2", private$token),
125 "Content-Type" = "application/json")
126 body <- jsonlite::toJSON(body, auto_unbox = T)
128 serverResponse <- private$http$POST(collectionURL, headers, body)
130 collection <- private$httpParser$parseJSONResponse(serverResponse)
132 if(!is.null(collection$errors))
133 stop(collection$errors)
144 webDavHostName = NULL,