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