3 HttpRequest <- R6::R6Class(
9 validContentTypes = NULL,
12 initialize = function()
14 self$validContentTypes <- c("text", "raw")
15 self$validVerbs <- c("GET", "POST", "PUT", "DELETE", "PROPFIND", "MOVE")
18 exec = function(verb, url, headers = NULL, body = NULL, queryParams = NULL,
21 if(!(verb %in% self$validVerbs))
22 stop("Http verb is not valid.")
24 urlQuery <- self$createQuery(queryParams)
25 url <- paste0(url, urlQuery)
27 config <- httr::add_headers(unlist(headers))
28 if(toString(Sys.getenv("ARVADOS_API_HOST_INSECURE") == "TRUE"))
29 config$options = list(ssl_verifypeer = FALSE)
31 # times = 1 regular call + numberOfRetries
32 response <- httr::RETRY(verb, url = url, body = body,
33 config = config, times = retryTimes + 1)
36 createQuery = function(queryParams)
38 queryParams <- Filter(Negate(is.null), queryParams)
40 query <- sapply(queryParams, function(param)
42 if(is.list(param) || length(param) > 1)
43 param <- RListToPythonList(param, ",")
45 URLencode(as.character(param), reserved = T, repeated = T)
51 query <- paste0(names(query), "=", query, collapse = "&")
53 return(paste0("/?", query))