[ARVADOS] updated: 1.1.1-205-gf2a79e0

Git user git at public.curoverse.com
Fri Dec 8 11:23:07 EST 2017


Summary of changes:
 build/run-tests.sh                                 |  10 +
 sdk/R/.RData                                       | Bin 162592 -> 190002 bytes
 sdk/R/R/Arvados.R                                  |  20 +-
 sdk/R/R/ArvadosFile.R                              |  31 ++-
 sdk/R/R/Collection.R                               |  21 +-
 sdk/R/R/HttpParser.R                               |  12 +-
 sdk/R/R/HttpRequest.R                              |   5 +-
 sdk/python/tests/run_test_server.py                |  15 --
 services/api/Gemfile                               |   1 +
 services/api/Gemfile.lock                          |   2 +
 .../api/app/controllers/application_controller.rb  |   2 +-
 .../controllers/arvados/v1/schema_controller.rb    |  11 +-
 .../app/controllers/user_sessions_controller.rb    |   6 +-
 services/api/app/middlewares/arvados_api_token.rb  |  45 ++---
 .../api/app/models/api_client_authorization.rb     | 118 ++++++++++++
 services/api/config/application.default.yml        |  29 ++-
 .../arvados/v1/groups_controller_test.rb           |   1 -
 services/api/test/integration/remote_user_test.rb  | 214 +++++++++++++++++++++
 services/api/test/integration/users_test.rb        |   1 -
 services/api/test/test_helper.rb                   |   8 +
 20 files changed, 472 insertions(+), 80 deletions(-)
 create mode 100644 services/api/test/integration/remote_user_test.rb

       via  f2a79e0cc9bffcbe941d9a05b78f102fa6f09d03 (commit)
       via  eb95e18a3f2686762a99723ba4d7f0803f9d3c5d (commit)
       via  e21d1ca94f6d3ed5480e5a51e92ddb002c8a09fb (commit)
       via  934b2b25199cb4696fe6ad38406b3ec1cec8f9e8 (commit)
       via  afd47ec89aae6fa96dfedc53420b998b50d48318 (commit)
       via  1b993cdda270016bcf82fcad7f2168659345aa0e (commit)
       via  fef69cced85fd6512d352791d9123f8d8449acdc (commit)
       via  e5de95c8d7040a2810238e069dd18403765ce056 (commit)
       via  ae36f78143f258c4eecbee623efb2c2bfcd303a8 (commit)
       via  f3dc89653597f7f6de480850231ea1f6b991c8aa (commit)
       via  d3340a0c34dc9827c6cc595af4b741de5db5d51b (commit)
       via  28bacfc853989e874f59cfa5465f085973046f9a (commit)
       via  5b7d9ac131477e2769ca8a22dbb6172730698528 (commit)
       via  644f5de63e2b8b02e054fcbb3e9af39560cffae3 (commit)
       via  7d51b030e06c4314ee596bfdd51f1d8ad4f5f992 (commit)
       via  f15c51d123da2db1deeeb0e76685cf17eb56e039 (commit)
       via  fb3b32f1aeeca1b52c1136ec48b50ea18ba71b17 (commit)
       via  07a2b2c0e743f36be03e746a7e265986db555d3e (commit)
       via  3ed14dc61e8d39d748d0e7c25d12e4e5c45e09a8 (commit)
       via  cd4f5cfb00a253726a0c9087721273fd9b142be1 (commit)
       via  e9a9add82323c93e6da8b1ed8ed019e0f5a9323b (commit)
       via  d62abcbe1fe0fcf0ce65cb7ea812db307b734a45 (commit)
       via  335f28908c61409ee12cbce0d4225d5a35d5c9b5 (commit)
       via  2e60c3bde91754e93af639afeff8ec32f201d40e (commit)
       via  ecf6627111838530f64ffcd689e11d987cc7bf2f (commit)
       via  1e3f8ceebd90058e902494fae84b1fd57ac6693b (commit)
       via  530b25ab14999d0407e39e1bf0a0e5595da2a028 (commit)
       via  8424b5ef401ef05a8ca7bd0d6b4e635b7c0a8706 (commit)
       via  ef82b6ac04d9c813f2e9114c267559c6f30cb3b6 (commit)
       via  b5097189362f4cb1fb96d6993d570500a7e227ae (commit)
       via  0e659500b47d9bd4dc3e4c96167b3e55ac14082f (commit)
       via  01f52958d899c62b0b1f9a39fda960136835850c (commit)
      from  aba085a3abd65bc86075839298526ab2f686117c (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit f2a79e0cc9bffcbe941d9a05b78f102fa6f09d03
Merge: eb95e18 e21d1ca
Author: Fuad Muhic <fmuhic at capeannenterprises.com>
Date:   Fri Dec 8 17:22:53 2017 +0100

    Merge branch 'master' of git.curoverse.com:arvados into 11876-r-sdk
    
    Arvados-DCO-1.1-Signed-off-by: Fuad Muhic <fmuhic at capeannenterprises.com>


commit eb95e18a3f2686762a99723ba4d7f0803f9d3c5d
Author: Fuad Muhic <fmuhic at capeannenterprises.com>
Date:   Fri Dec 8 17:20:12 2017 +0100

    Added ability to read file from a collection and made minor fixes to
    collection content tree.
    
    Arvados-DCO-1.1-Signed-off-by: Fuad Muhic <fmuhic at capeannenterprises.com>

diff --git a/sdk/R/.RData b/sdk/R/.RData
index 626630b..21c7024 100644
Binary files a/sdk/R/.RData and b/sdk/R/.RData differ
diff --git a/sdk/R/R/Arvados.R b/sdk/R/R/Arvados.R
index 82f3aba..ab38763 100644
--- a/sdk/R/R/Arvados.R
+++ b/sdk/R/R/Arvados.R
@@ -64,11 +64,11 @@ Arvados <- setRefClass(
 
             collection_get <<- function(uuid) 
             {
-                collection_url <- paste0(host, "collections/", uuid)
+                collectionURL <- paste0(host, "collections/", uuid)
                 headers <- list(Authorization = paste("OAuth2", token))
 
                 http <- HttpRequest() 
-                serverResponse <- http$GET(collection_url, headers)
+                serverResponse <- http$GET(collectionURL, headers)
 
                 httpParser <- HttpParser()
                 collection <- httpParser$parseJSONResponse(serverResponse)
@@ -81,11 +81,11 @@ Arvados <- setRefClass(
 
             collection_list <<- function(filters = NULL, limit = 100, offset = 0) 
             {
-                collection_url <- paste0(host, "collections")
+                collectionURL <- paste0(host, "collections")
                 headers <- list(Authorization = paste("OAuth2", token))
 
                 http <- HttpRequest() 
-                serverResponse <- http$GET(collection_url, headers, NULL, filters, limit, offset)
+                serverResponse <- http$GET(collectionURL, headers, NULL, filters, limit, offset)
 
                 httpParser <- HttpParser()
                 collection <- httpParser$parseJSONResponse(serverResponse)
@@ -98,12 +98,12 @@ Arvados <- setRefClass(
 
             collection_delete <<- function(uuid) 
             {
-                collection_url <- paste0(host, "collections/", uuid)
+                collectionURL <- paste0(host, "collections/", uuid)
                 headers <- list("Authorization" = paste("OAuth2", token),
                                 "Content-Type"  = "application/json")
 
                 http <- HttpRequest() 
-                serverResponse <- http$DELETE(collection_url, headers)
+                serverResponse <- http$DELETE(collectionURL, headers)
 
                 httpParser <- HttpParser()
                 collection <- httpParser$parseJSONResponse(serverResponse)
@@ -116,13 +116,13 @@ Arvados <- setRefClass(
 
             collection_update <<- function(uuid, body) 
             {
-                collection_url <- paste0(host, "collections/", uuid)
+                collectionURL <- paste0(host, "collections/", uuid)
                 headers <- list("Authorization" = paste("OAuth2", token),
                                 "Content-Type"  = "application/json")
                 body <- jsonlite::toJSON(body, auto_unbox = T)
 
                 http <- HttpRequest() 
-                serverResponse <- http$PUT(collection_url, headers, body)
+                serverResponse <- http$PUT(collectionURL, headers, body)
 
                 httpParser <- HttpParser()
                 collection <- httpParser$parseJSONResponse(serverResponse)
@@ -135,13 +135,13 @@ Arvados <- setRefClass(
 
             collection_create <<- function(body) 
             {
-                collection_url <- paste0(host, "collections")
+                collectionURL <- paste0(host, "collections")
                 headers <- list("Authorization" = paste("OAuth2", token),
                                 "Content-Type"  = "application/json")
                 body <- jsonlite::toJSON(body, auto_unbox = T)
 
                 http <- HttpRequest() 
-                serverResponse <- http$POST(collection_url, headers, body)
+                serverResponse <- http$POST(collectionURL, headers, body)
 
                 httpParser <- HttpParser()
                 collection <- httpParser$parseJSONResponse(serverResponse)
diff --git a/sdk/R/R/ArvadosFile.R b/sdk/R/R/ArvadosFile.R
index 45aee1e..067e70a 100644
--- a/sdk/R/R/ArvadosFile.R
+++ b/sdk/R/R/ArvadosFile.R
@@ -1,3 +1,4 @@
+source("./R/HttpRequest.R")
 #' ArvadosFile Class
 #' 
 #' @details 
@@ -10,12 +11,38 @@ ArvadosFile <- setRefClass(
     "ArvadosFile",
     fields = list(
         name         = "character",
-        relativePath = "character"
+        relativePath = "character",
+
+        read = "function"
+
+
     ),
     methods = list(
-        initialize = function(subcollectionName)
+        initialize = function(subcollectionName, api)
         {
             name <<- subcollectionName
+
+            read <<- function(offset = 0, length = 0)
+            {
+                if(offset < 0 || length < 0)
+                stop("Offset and length must be positive values.")
+
+                range = paste0("bytes=", offset, "-")
+
+                if(length > 0)
+                    range = paste0(range, offset + length - 1)
+                
+                fileURL = paste0(api$getWebDavHostName(), relativePath);
+                headers <- list(Authorization = paste("OAuth2", api$getWebDavToken()), 
+                                Range = range)
+
+                #TODO(Fudo): Move this to HttpRequest.R
+                # serverResponse <- httr::GET(url = fileURL,
+                                            # config = httr::add_headers(unlist(headers)))
+                http <- HttpRequest()
+                serverResponse <- http$GET(fileURL, headers)
+                parsed_response <- httr::content(serverResponse, "raw")
+            }
         }
     )
 )
diff --git a/sdk/R/R/Collection.R b/sdk/R/R/Collection.R
index bd6bd3f..29afadc 100644
--- a/sdk/R/R/Collection.R
+++ b/sdk/R/R/Collection.R
@@ -128,7 +128,7 @@ Collection <- setRefClass(
                     }
                 }
                 
-                nodeToCheck = .self$items
+                nodeToCheck = .self$fileContent
                 for(fileNameIndex in 1:length(fileWithPath))
                 {
                     nodeToCheck <- findFileIfExists(fileWithPath[fileNameIndex], nodeToCheck)
@@ -143,15 +143,16 @@ Collection <- setRefClass(
             # Private methods
             .createCollectionContentTree <- function(fileStructure)
             {
-                #TODO(Fudo): Refactot this.
+                #TODO(Fudo): Refactor this.
+                #TODO(Fudo): Find a way to link children to parents. (R has no pointers or references).
                 treeBranches <- sapply(fileStructure, function(filePath)
                 {
-                    fileWithPath <- unlist(str_split(filePath, "/"))
+                    fileWithPath <- unlist(stringr::str_split(filePath, "/"))
                     file <- fileWithPath[length(fileWithPath), drop = T]
 
                     if(file != "")
                     {
-                        file <- ArvadosFile(file)
+                        file <- ArvadosFile(file, api)
                         file$relativePath <- filePath
                     }
                     else
@@ -212,13 +213,13 @@ Collection <- setRefClass(
             }
 
             #Todo(Fudo): This is dummy data. Real content will come from WebDAV server.
-            testFileStructure <- c("math.h", "main.cpp", "emptyFolder/",
-                                   "java/render.java", "java/test/observer.java",
-                                   "java/test/observable.java",
-                                   "csharp/this.cs", "csharp/is.cs",
-                                   "csharp/dummy.cs", "csharp/file.cs")
+            # testFileStructure <- c("math.h", "main.cpp", "emptyFolder/",
+                                   # "java/render.java", "java/test/observer.java",
+                                   # "java/test/observable.java",
+                                   # "csharp/this.cs", "csharp/is.cs",
+                                   # "csharp/dummy.cs", "csharp/file.cs")
             items  <<- getCollectionContent()
-            fileContent  <<- .createCollectionContentTree(testFileStructure)
+            fileContent  <<- .createCollectionContentTree(items)
         }
     )
 )
diff --git a/sdk/R/R/HttpParser.R b/sdk/R/R/HttpParser.R
index bbe0a60..fb895be 100644
--- a/sdk/R/R/HttpParser.R
+++ b/sdk/R/R/HttpParser.R
@@ -12,16 +12,16 @@ HttpParser <- setRefClass(
         {
         },
 
-        parseCollectionGet = function(server_response) 
+        parseCollectionGet = function(serverResponse) 
         {
-            parsed_response <- httr::content(server_response, as = "parsed", type = "application/json")
+            parsed_response <- httr::content(serverResponse, as = "parsed", type = "application/json")
 
             #Todo(Fudo): Create new Collection object and populate it
         },
 
-        parseJSONResponse = function(server_response) 
+        parseJSONResponse = function(serverResponse) 
         {
-            parsed_response <- httr::content(server_response, as = "parsed", type = "application/json")
+            parsed_response <- httr::content(serverResponse, as = "parsed", type = "application/json")
 
             #Todo(Fudo): Create new Collection object and populate it
         },
@@ -39,7 +39,9 @@ HttpParser <- setRefClass(
                     sub(base, "", URLdecode(XML::xmlValue(node)), fixed=TRUE)
                 })
             )
-            result[result != ""]
+            result <- result[result != ""]
+            #Todo(Fudo): Test this.
+            result[-1]
         }
 
     )
diff --git a/sdk/R/R/HttpRequest.R b/sdk/R/R/HttpRequest.R
index eecf0c1..ddb8f71 100644
--- a/sdk/R/R/HttpRequest.R
+++ b/sdk/R/R/HttpRequest.R
@@ -17,9 +17,8 @@ HttpRequest <- setRefClass(
         {
             # Public methods
             GET <<- function(url, headers = NULL, body = NULL,
-                             queryFilters = NULL, limit = 100, offset = 0)
+                             queryFilters = NULL, limit = NULL, offset = NULL)
             {
-                print(limit)
                 headers <- httr::add_headers(unlist(headers))
                 query <- .createQuery(queryFilters, limit, offset)
                 url <- paste0(url, query)
@@ -49,7 +48,7 @@ HttpRequest <- setRefClass(
             }
 
             DELETE <<- function(url, headers = NULL, body = NULL,
-                             queryFilters = NULL, limit = 100, offset = 0)
+                             queryFilters = NULL, limit = NULL, offset = NULL)
             {
                 headers <- httr::add_headers(unlist(headers))
                 query <- .createQuery(queryFilters, limit, offset)

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list