remove trailing white space from all files
[arvados.git] / sdk / R / R / HttpRequest.R
index a0e8077bc557e2b1ebfd062eef9ca03a0ebdceab..4595fef662c1c9422af13dc0222a10bd9a9df48a 100644 (file)
@@ -1,3 +1,7 @@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: Apache-2.0
+
 source("./R/util.R")
 
 HttpRequest <- R6::R6Class(
@@ -9,60 +13,31 @@ HttpRequest <- R6::R6Class(
         validContentTypes = NULL,
         validVerbs = NULL,
 
-        initialize = function() 
+        initialize = function()
         {
             self$validContentTypes <- c("text", "raw")
             self$validVerbs <- c("GET", "POST", "PUT", "DELETE", "PROPFIND", "MOVE")
         },
 
-        execute = function(verb, url, headers = NULL, body = NULL, query = NULL,
-                           limit = NULL, offset = NULL, retryTimes = 0)
-        {
-            if(!(verb %in% self$validVerbs))
-                stop("Http verb is not valid.")
-
-            headers  <- httr::add_headers(unlist(headers))
-            urlQuery <- self$createQuery(query, limit, offset)
-            url      <- paste0(url, urlQuery)
-
-            # times = 1 regular call + numberOfRetries
-            response <- httr::RETRY(verb, url = url, body = body,
-                                    config = headers, times = retryTimes + 1)
-        },
-
         exec = function(verb, url, headers = NULL, body = NULL, queryParams = NULL,
                         retryTimes = 0)
         {
             if(!(verb %in% self$validVerbs))
                 stop("Http verb is not valid.")
 
-            headers  <- httr::add_headers(unlist(headers))
-            urlQuery <- self$genQuery(queryParams)
+            urlQuery <- self$createQuery(queryParams)
             url      <- paste0(url, urlQuery)
 
+            config <- httr::add_headers(unlist(headers))
+            if(toString(Sys.getenv("ARVADOS_API_HOST_INSECURE") == "TRUE"))
+               config$options = list(ssl_verifypeer = 0L)
+
             # times = 1 regular call + numberOfRetries
             response <- httr::RETRY(verb, url = url, body = body,
-                                    config = headers, times = retryTimes + 1)
-        },
-
-        createQuery = function(filters, limit, offset)
-        {
-            finalQuery <- NULL
-
-            finalQuery <- c(finalQuery, private$createFiltersQuery(filters))
-            finalQuery <- c(finalQuery, private$createLimitQuery(limit))
-            finalQuery <- c(finalQuery, private$createOffsetQuery(offset))
-
-            finalQuery <- finalQuery[!is.null(finalQuery)]
-            finalQuery <- paste0(finalQuery, collapse = "&")
-
-            if(finalQuery != "")
-                finalQuery <- paste0("/?", finalQuery)
-
-            finalQuery
+                                    config = config, times = retryTimes + 1)
         },
 
-        genQuery = function(queryParams)
+        createQuery = function(queryParams)
         {
             queryParams <- Filter(Negate(is.null), queryParams)
 
@@ -83,52 +58,17 @@ HttpRequest <- R6::R6Class(
             }
 
             return("")
-        }
-    ),
-
-    private = list(
-
-        createFiltersQuery = function(filters)
-        {
-            if(!is.null(filters))
-            {
-                filters <- RListToPythonList(filters, ",")
-                encodedQuery <- URLencode(filters, reserved = T, repeated = T)
-
-                return(paste0("filters=", encodedQuery))
-            }
-
-            return(NULL)
         },
 
-        createLimitQuery = function(limit)
+        getConnection = function(url, headers, openMode)
         {
-            if(!is.null(limit))
-            {
-                limit <- suppressWarnings(as.numeric(limit))
-
-                if(is.na(limit))
-                    stop("Limit must be a numeric type.")
-                
-                return(paste0("limit=", limit))
-            }
-
-            return(NULL)
-        },
+            h <- curl::new_handle()
+            curl::handle_setheaders(h, .list = headers)
 
-        createOffsetQuery = function(offset)
-        {
-            if(!is.null(offset))
-            {
-                offset <- suppressWarnings(as.numeric(offset))
-
-                if(is.na(offset))
-                    stop("Offset must be a numeric type.")
-                
-                return(paste0("offset=", offset))
-            }
+            if(toString(Sys.getenv("ARVADOS_API_HOST_INSECURE") == "TRUE"))
+               curl::handle_setopt(h, ssl_verifypeer = 0L)
 
-            return(NULL)
+            conn <- curl::curl(url = url, open = openMode, handle = h)
         }
     ),