2411: add copyright headers to our R files.
[arvados.git] / sdk / R / R / HttpParser.R
1 # Copyright (C) The Arvados Authors. All rights reserved.
2 #
3 # SPDX-License-Identifier: Apache-2.0
4
5 HttpParser <- R6::R6Class(
6
7     "HttrParser",
8
9     public = list(
10
11         validContentTypes = NULL,
12
13         initialize = function() 
14         {
15             self$validContentTypes <- c("text", "raw")
16         },
17
18         parseJSONResponse = function(serverResponse) 
19         {
20             parsed_response <- httr::content(serverResponse,
21                                              as = "parsed",
22                                              type = "application/json")
23         },
24
25         parseResponse = function(serverResponse, outputType)
26         {
27             parsed_response <- httr::content(serverResponse, as = outputType)
28         },
29
30         getFileNamesFromResponse = function(response, uri)
31         {
32             text <- rawToChar(response$content)
33             doc <- XML::xmlParse(text, asText=TRUE)
34             base <- paste(paste("/", strsplit(uri, "/")[[1]][-1:-3], sep="", collapse=""), "/", sep="")
35             result <- unlist(
36                 XML::xpathApply(doc, "//D:response/D:href", function(node) {
37                     sub(base, "", URLdecode(XML::xmlValue(node)), fixed=TRUE)
38                 })
39             )
40             result <- result[result != ""]
41             result[-1]
42         },
43
44         getFileSizesFromResponse = function(response, uri)    
45         {
46             text <- rawToChar(response$content)
47             doc <- XML::xmlParse(text, asText=TRUE)
48
49             base <- paste(paste("/", strsplit(uri, "/")[[1]][-1:-3], sep="", collapse=""), "/", sep="")
50             result <- XML::xpathApply(doc, "//D:response/D:propstat/D:prop/D:getcontentlength", function(node) {
51               XML::xmlValue(node)
52             })
53
54             unlist(result)
55         }
56     )
57 )