X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/6eeb2b1a7b30e356514f1f842c5d7ecafd126732..8e43dcf899a3322e66c709b149ce557f5255bf18:/sdk/R/R/autoGenAPI.R diff --git a/sdk/R/R/autoGenAPI.R b/sdk/R/R/autoGenAPI.R index e0ad551e1e..c86684f8b0 100644 --- a/sdk/R/R/autoGenAPI.R +++ b/sdk/R/R/autoGenAPI.R @@ -1,5 +1,9 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 + getAPIDocument <- function(){ - url <- "https://4xphq.arvadosapi.com/discovery/v1/apis/arvados/v1/rest" + url <- "https://jutro.arvadosapi.com/discovery/v1/apis/arvados/v1/rest" serverResponse <- httr::RETRY("GET", url = url) httr::content(serverResponse, as = "parsed", type = "application/json") @@ -13,14 +17,18 @@ generateAPI <- function() discoveryDocument <- getAPIDocument() methodResources <- discoveryDocument$resources + + # Don't emit deprecated APIs + methodResources <- methodResources[!(names(methodResources) %in% c("jobs", "job_tasks", "pipeline_templates", "pipeline_instances", + "keep_disks", "nodes", "humans", "traits", "specimens"))] resourceNames <- names(methodResources) - methodDoc <- generateMethodsDocumentation(methodResources, resourceNames) - classDoc <- generateAPIClassDocumentation(methodResources, resourceNames) - arvadosAPIHeader <- generateAPIClassHeader() - arvadosProjectMethods <- generateProjectMethods() - arvadosClassMethods <- generateClassContent(methodResources, resourceNames) - arvadosAPIFooter <- generateAPIClassFooter() + methodDoc <- genMethodsDoc(methodResources, resourceNames) + classDoc <- genAPIClassDoc(methodResources, resourceNames) + arvadosAPIHeader <- genAPIClassHeader() + arvadosProjectMethods <- genProjectMethods() + arvadosClassMethods <- genClassContent(methodResources, resourceNames) + arvadosAPIFooter <- genAPIClassFooter() arvadosClass <- c(methodDoc, classDoc, @@ -30,12 +38,16 @@ generateAPI <- function() arvadosAPIFooter) fileConn <- file("./R/Arvados.R", "w") + writeLines(c( + "# Copyright (C) The Arvados Authors. All rights reserved.", + "#", + "# SPDX-License-Identifier: Apache-2.0", ""), fileConn) writeLines(unlist(arvadosClass), fileConn) close(fileConn) NULL } -generateAPIClassHeader <- function() +genAPIClassHeader <- function() { c("Arvados <- R6::R6Class(", "", @@ -69,7 +81,7 @@ generateAPIClassHeader <- function() "\t\t},\n") } -generateProjectMethods <- function() +genProjectMethods <- function() { c("\t\tprojects.get = function(uuid)", "\t\t{", @@ -105,7 +117,7 @@ generateProjectMethods <- function() "") } -generateClassContent <- function(methodResources, resourceNames) +genClassContent <- function(methodResources, resourceNames) { arvadosMethods <- Map(function(resource, resourceName) { @@ -131,7 +143,7 @@ generateClassContent <- function(methodResources, resourceNames) arvadosMethods } -generateAPIClassFooter <- function() +genAPIClassFooter <- function() { c("\t\tgetHostName = function() private$host,", "\t\tgetToken = function() private$token,", @@ -248,7 +260,7 @@ getRequestURL <- function(methodMetaData) getRequestHeaders <- function() { - c("headers <- list(Authorization = paste(\"OAuth2\", private$token), ", + c("headers <- list(Authorization = paste(\"Bearer\", private$token), ", " \"Content-Type\" = \"application/json\")") } @@ -315,8 +327,7 @@ getReturnObject <- function() #NOTE: Arvados class documentation: - -generateMethodsDocumentation <- function(methodResources, resourceNames) +genMethodsDoc <- function(methodResources, resourceNames) { methodsDoc <- unlist(unname(Map(function(resource, resourceName) { @@ -331,22 +342,24 @@ generateMethodsDocumentation <- function(methodResources, resourceNames) return(NULL) methodName <- paste0(resourceName, ".", methodName) - getMethodDocumentation(methodName, methodMetaData) + getMethodDoc(methodName, methodMetaData) }, resource$methods, methodNames) unlist(unname(methodDoc)) }, methodResources, resourceNames))) - - methodsDoc + + projectDoc <- genProjectMethodsDoc() + + c(methodsDoc, projectDoc) } -generateAPIClassDocumentation <- function(methodResources, resourceNames) +genAPIClassDoc <- function(methodResources, resourceNames) { c("#' Arvados", "#'", - "#' Arvados class gives users ability to manipulate collections and projects.", + "#' Arvados class gives users ability to access Arvados REST API.", "#'" , "#' @section Usage:", "#' \\preformatted{arv = Arvados$new(authToken = NULL, hostName = NULL, numRetries = 0)}", @@ -396,13 +409,13 @@ getAPIClassMethodList <- function(methodResources, resourceNames) methodNames[!(methodNames %in% c("index", "show", "destroy"))]) }, methodResources, resourceNames))) - + hardcodedMethods <- c("projects.create", "projects.get", "projects.list", "projects.update", "projects.delete") - paste0("#' \t\\item{}{\\code{\\link{", sort(c(methodList, hardcodedMethods)), "}}}") + paste0("#' \t\\item{}{\\code{\\link{", sort(c(methodList, hardcodedMethods)), "}}}") } -getMethodDocumentation <- function(methodName, methodMetaData) +getMethodDoc <- function(methodName, methodMetaData) { name <- paste("#' @name", methodName) usage <- getMethodUsage(methodName, methodMetaData) @@ -410,7 +423,9 @@ getMethodDocumentation <- function(methodName, methodMetaData) params <- getMethodDescription(methodMetaData) returnValue <- paste("#' @return", methodMetaData$response[["$ref"]], "object.") - c(description, + c(paste("#'", methodName), + "#' ", + description, "#' ", usage, params, @@ -440,7 +455,7 @@ getMethodDescription <- function(methodMetaData) className <- sapply(prop, function(ref) ref) objectName <- paste0(tolower(substr(className, 1, 1)), substr(className, 2, nchar(className))) - paste("#' @param", objectName, className, "object.") + paste("#' @param", objectName, className, "object.") }))) } @@ -450,12 +465,81 @@ getMethodDescription <- function(methodMetaData) { arg <- methodMetaData$parameters[[argName]] argDescription <- arg$description - paste("#' @param", argName, argDescription) + paste("#' @param", argName, argDescription) }))) c(requestDoc, argsDoc) } +genProjectMethodsDoc <- function() +{ + #TODO: Manually update this documentation to reflect changes in discovery document. + c("#' project.get", + "#' ", + "#' projects.get is equivalent to groups.get method.", + "#' ", + "#' @usage arv$projects.get(uuid)", + "#' @param uuid The UUID of the Group in question.", + "#' @return Group object.", + "#' @name projects.get", + "NULL", + "", + "#' project.create", + "#' ", + "#' projects.create wrapps groups.create method by setting group_class attribute to \"project\".", + "#' ", + "#' @usage arv$projects.create(group, ensure_unique_name = \"false\")", + "#' @param group Group object.", + "#' @param ensure_unique_name Adjust name to ensure uniqueness instead of returning an error on (owner_uuid, name) collision.", + "#' @return Group object.", + "#' @name projects.create", + "NULL", + "", + "#' project.update", + "#' ", + "#' projects.update wrapps groups.update method by setting group_class attribute to \"project\".", + "#' ", + "#' @usage arv$projects.update(group, uuid)", + "#' @param group Group object.", + "#' @param uuid The UUID of the Group in question.", + "#' @return Group object.", + "#' @name projects.update", + "NULL", + "", + "#' project.delete", + "#' ", + "#' projects.delete is equivalent to groups.delete method.", + "#' ", + "#' @usage arv$project.delete(uuid)", + "#' @param uuid The UUID of the Group in question.", + "#' @return Group object.", + "#' @name projects.delete", + "NULL", + "", + "#' project.list", + "#' ", + "#' projects.list wrapps groups.list method by setting group_class attribute to \"project\".", + "#' ", + "#' @usage arv$projects.list(filters = NULL,", + "#' where = NULL, order = NULL, distinct = NULL,", + "#' limit = \"100\", offset = \"0\", count = \"exact\",", + "#' include_trash = NULL, uuid = NULL, recursive = NULL)", + "#' @param filters ", + "#' @param where ", + "#' @param order ", + "#' @param distinct ", + "#' @param limit ", + "#' @param offset ", + "#' @param count ", + "#' @param include_trash Include items whose is_trashed attribute is true.", + "#' @param uuid ", + "#' @param recursive Include contents from child groups recursively.", + "#' @return Group object.", + "#' @name projects.list", + "NULL", + "") +} + #NOTE: Utility functions: # This function is used to split very long lines of code into smaller chunks. @@ -465,7 +549,7 @@ formatArgs <- function(prependAtStart, prependToEachSplit, { if(length(args) > 1) { - args[1:(length(args) - 1)] <- paste0(args[1:(length(args) - 1)], ",") + args[1:(length(args) - 1)] <- paste0(args[1:(length(args) - 1)], ",") } args[1] <- paste0(prependAtStart, args[1]) @@ -488,12 +572,12 @@ formatArgs <- function(prependAtStart, prependToEachSplit, argLines <- c(argLines, line) } - + argLines <- unlist(argLines) argLinesLen <- length(argLines) if(argLinesLen > 1) - argLines[2:argLinesLen] <- paste0(prependToEachSplit, argLines[2:argLinesLen]) + argLines[2:argLinesLen] <- paste0(prependToEachSplit, argLines[2:argLinesLen]) argLines }