When env variable ARVADOS_API_HOST_INSECURE is set HTTP client will not try to valida...
[arvados.git] / sdk / R / R / HttpRequest.R
1 source("./R/util.R")
2
3 HttpRequest <- R6::R6Class(
4
5     "HttrRequest",
6
7     public = list(
8
9         validContentTypes = NULL,
10         validVerbs = NULL,
11
12         initialize = function() 
13         {
14             self$validContentTypes <- c("text", "raw")
15             self$validVerbs <- c("GET", "POST", "PUT", "DELETE", "PROPFIND", "MOVE")
16         },
17
18         exec = function(verb, url, headers = NULL, body = NULL, queryParams = NULL,
19                         retryTimes = 0)
20         {
21             if(!(verb %in% self$validVerbs))
22                 stop("Http verb is not valid.")
23
24             urlQuery <- self$createQuery(queryParams)
25             url      <- paste0(url, urlQuery)
26
27             config <- httr::add_headers(unlist(headers))
28             if(toString(Sys.getenv("ARVADOS_API_HOST_INSECURE") == "TRUE"))
29                config$options = list(ssl_verifypeer = FALSE)
30
31             print(config)
32             # times = 1 regular call + numberOfRetries
33             response <- httr::RETRY(verb, url = url, body = body,
34                                     config = config, times = retryTimes + 1)
35         },
36
37         createQuery = function(queryParams)
38         {
39             queryParams <- Filter(Negate(is.null), queryParams)
40
41             query <- sapply(queryParams, function(param)
42             {
43                 if(is.list(param) || length(param) > 1)
44                     param <- RListToPythonList(param, ",")
45
46                 URLencode(as.character(param), reserved = T, repeated = T)
47
48             }, USE.NAMES = TRUE)
49
50             if(length(query) > 0)
51             {
52                 query <- paste0(names(query), "=", query, collapse = "&")
53
54                 return(paste0("/?", query))
55             }
56
57             return("")
58         }
59     ),
60
61     cloneable = FALSE
62 )