r.api.mustache Maven / Gradle / Ivy
{{>partial_header}}
{{#operations}}
#' @title {{baseName}} operations
#' @description {{importPath}}
#'
#' @field path Stores url path of the request.
#' @field apiClient Handles the client-server communication.
#' @field userAgent Set the user agent of the request.
#'
#' @importFrom R6 R6Class
#'
#' @section Methods:
#' \describe{
{{#operation}}
#'
#' {{operationId}} {{summary}}
#'
{{/operation}}
#' }
#'
#' @export
{{classname}} <- R6::R6Class(
'{{classname}}',
public = list(
userAgent = "{{#httpUserAgent}}{{{.}}}{{/httpUserAgent}}{{^httpUserAgent}}Swagger-Codegen/{{{packageVersion}}}/r{{/httpUserAgent}}",
apiClient = NULL,
initialize = function(apiClient){
if (!missing(apiClient)) {
self$apiClient <- apiClient
}
else {
self$apiClient <- ApiClient$new()
}
},
{{#operation}}
{{operationId}} = function({{#allParams}}{{paramName}}, {{/allParams}}...){
args <- list(...)
queryParams <- list()
headerParams <- character()
{{#hasHeaderParams}}
{{#headerParams}}
if (!missing(`{{paramName}}`)) {
headerParams['{{baseName}}'] <- `{{paramName}}`
}
{{/headerParams}}
{{/hasHeaderParams}}
{{#hasQueryParams}}
{{#queryParams}}
if (!missing(`{{paramName}}`)) {
queryParams['{{baseName}}'] <- {{paramName}}
}
{{/queryParams}}
{{/hasQueryParams}}
{{#hasFormParams}}
body <- list(
{{#formParams}}
{{^isFile}}
"{{baseName}}" = {{paramName}}{{#hasMore}},{{/hasMore}}
{{/isFile}}
{{#isFile}}
"{{baseName}}" = httr::upload_file({{paramName}}){{#hasMore}},{{/hasMore}}
{{/isFile}}
{{/formParams}}
)
{{/hasFormParams}}
{{#hasBodyParam}}
{{#bodyParams}}
if (!missing(`{{paramName}}`)) {
body <- `{{paramName}}`$toJSONString()
} else {
body <- NULL
}
{{/bodyParams}}
{{/hasBodyParam}}
urlPath <- "{{path}}"
{{#hasPathParams}}
{{#pathParams}}
if (!missing(`{{paramName}}`)) {
urlPath <- gsub(paste0("\\{", "{{baseName}}", "\\}"), `{{paramName}}`, urlPath)
}
{{/pathParams}}
{{/hasPathParams}}
resp <- self$apiClient$callApi(url = paste0(self$apiClient$basePath, urlPath),
method = "{{httpMethod}}",
queryParams = queryParams,
headerParams = headerParams,
body = body,
...)
if (httr::status_code(resp) >= 200 && httr::status_code(resp) <= 299) {
{{#returnType}}
returnObject <- {{returnType}}$new()
result <- returnObject$fromJSON(httr::content(resp, "text", encoding = "UTF-8"))
Response$new(returnObject, resp)
{{/returnType}}
{{^returnType}}
# void response, no need to return anything
{{/returnType}}
} else if (httr::status_code(resp) >= 400 && httr::status_code(resp) <= 499) {
Response$new("API client error", resp)
} else if (httr::status_code(resp) >= 500 && httr::status_code(resp) <= 599) {
Response$new("API server error", resp)
}
}{{#hasMore}},{{/hasMore}}
{{/operation}}
)
)
{{/operations}}