forked from loafle/openapi-generator-original
Add mapping features to R client generator (#16252)
* add mapping features to r client generator * update samples
This commit is contained in:
parent
d1f23ef663
commit
6f05655101
@ -4,6 +4,12 @@ inputSpec: modules/openapi-generator/src/test/resources/3_0/r/petstore.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/r
|
||||
httpUserAgent: PetstoreAgent
|
||||
library: httr2
|
||||
modelNameMappings:
|
||||
dummy_model: JustModel
|
||||
parameterNameMappings:
|
||||
path_array: path_array_parameter
|
||||
nameMappings:
|
||||
percent_description: percent
|
||||
additionalProperties:
|
||||
packageName: petstore
|
||||
exceptionPackage: rlang
|
||||
@ -11,3 +17,4 @@ additionalProperties:
|
||||
returnExceptionOnFailure: true
|
||||
errorObjectType: "ModelApiResponse"
|
||||
operationIdNaming: snake_case
|
||||
|
||||
|
@ -393,6 +393,11 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||
|
||||
@Override
|
||||
public String toParamName(String name) {
|
||||
// obtain the name from parameterNameMapping directly if provided
|
||||
if (parameterNameMapping.containsKey(name)) {
|
||||
return parameterNameMapping.get(name);
|
||||
}
|
||||
|
||||
// replace - with _ e.g. created-at => created_at
|
||||
name = sanitizeName(name.replaceAll("-", "_"));
|
||||
|
||||
@ -417,6 +422,11 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||
|
||||
@Override
|
||||
public String toVarName(String name) {
|
||||
// obtain the name from nameMapping directly if provided
|
||||
if (nameMapping.containsKey(name)) {
|
||||
return nameMapping.get(name);
|
||||
}
|
||||
|
||||
// escape item reserved words with "item_" prefix
|
||||
if (itemReservedWords.contains(name)) {
|
||||
LOGGER.info("The item `{}` has been renamed to `item_{}` as it's a reserved word.", name, name);
|
||||
@ -434,11 +444,21 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||
|
||||
@Override
|
||||
public String toModelFilename(String name) {
|
||||
// obtain the name from modelNameMapping directly if provided
|
||||
if (modelNameMapping.containsKey(name)) {
|
||||
return underscore(modelNameMapping.get(name));
|
||||
}
|
||||
|
||||
return underscore(toModelName(name));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toModelName(String name) {
|
||||
// obtain the name from modelNameMapping directly if provided
|
||||
if (modelNameMapping.containsKey(name)) {
|
||||
return modelNameMapping.get(name);
|
||||
}
|
||||
|
||||
// We need to check if schema-mapping has a different model for this class, so we use it
|
||||
// instead of the auto-generated one.
|
||||
if (schemaMapping.containsKey(name)) {
|
||||
|
@ -1121,6 +1121,12 @@ components:
|
||||
required:
|
||||
- className
|
||||
- url_property
|
||||
dummy_model:
|
||||
description: to test the model name mapping
|
||||
type: object
|
||||
properties:
|
||||
property:
|
||||
type: string
|
||||
format_test:
|
||||
type: object
|
||||
required:
|
||||
@ -1189,3 +1195,4 @@ components:
|
||||
description: A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01.
|
||||
type: string
|
||||
pattern: '/^image_\d{1,3}$/i'
|
||||
|
||||
|
@ -18,6 +18,7 @@ R/category.R
|
||||
R/danish_pig.R
|
||||
R/date.R
|
||||
R/dog.R
|
||||
R/dummy_model.R
|
||||
R/fake_api.R
|
||||
R/format_test.R
|
||||
R/mammal.R
|
||||
@ -48,6 +49,7 @@ docs/Category.md
|
||||
docs/DanishPig.md
|
||||
docs/Date.md
|
||||
docs/Dog.md
|
||||
docs/DummyModel.md
|
||||
docs/FakeApi.md
|
||||
docs/FormatTest.md
|
||||
docs/Mammal.md
|
||||
|
@ -26,6 +26,7 @@ export(Category)
|
||||
export(DanishPig)
|
||||
export(Date)
|
||||
export(Dog)
|
||||
export(DummyModel)
|
||||
export(FormatTest)
|
||||
export(Mammal)
|
||||
export(ModelApiResponse)
|
||||
|
196
samples/client/petstore/R-httr2-wrapper/R/dummy_model.R
Normal file
196
samples/client/petstore/R-httr2-wrapper/R/dummy_model.R
Normal file
@ -0,0 +1,196 @@
|
||||
#' Create a new DummyModel
|
||||
#'
|
||||
#' @description
|
||||
#' to test the model name mapping
|
||||
#'
|
||||
#' @docType class
|
||||
#' @title DummyModel
|
||||
#' @description DummyModel Class
|
||||
#' @format An \code{R6Class} generator object
|
||||
#' @field property character [optional]
|
||||
#' @field _field_list a list of fields list(character)
|
||||
#' @field additional_properties additional properties list(character) [optional]
|
||||
#' @importFrom R6 R6Class
|
||||
#' @importFrom jsonlite fromJSON toJSON
|
||||
#' @export
|
||||
DummyModel <- R6::R6Class(
|
||||
"DummyModel",
|
||||
public = list(
|
||||
`property` = NULL,
|
||||
`_field_list` = c("property"),
|
||||
`additional_properties` = list(),
|
||||
#' Initialize a new DummyModel class.
|
||||
#'
|
||||
#' @description
|
||||
#' Initialize a new DummyModel class.
|
||||
#'
|
||||
#' @param property property
|
||||
#' @param additional_properties additional properties (optional)
|
||||
#' @param ... Other optional arguments.
|
||||
#' @export
|
||||
initialize = function(`property` = NULL, additional_properties = NULL, ...) {
|
||||
if (!is.null(`property`)) {
|
||||
if (!(is.character(`property`) && length(`property`) == 1)) {
|
||||
stop(paste("Error! Invalid data for `property`. Must be a string:", `property`))
|
||||
}
|
||||
self$`property` <- `property`
|
||||
}
|
||||
if (!is.null(additional_properties)) {
|
||||
for (key in names(additional_properties)) {
|
||||
self$additional_properties[[key]] <- additional_properties[[key]]
|
||||
}
|
||||
}
|
||||
},
|
||||
#' To JSON string
|
||||
#'
|
||||
#' @description
|
||||
#' To JSON String
|
||||
#'
|
||||
#' @return DummyModel in JSON format
|
||||
#' @export
|
||||
toJSON = function() {
|
||||
DummyModelObject <- list()
|
||||
if (!is.null(self$`property`)) {
|
||||
DummyModelObject[["property"]] <-
|
||||
self$`property`
|
||||
}
|
||||
for (key in names(self$additional_properties)) {
|
||||
DummyModelObject[[key]] <- self$additional_properties[[key]]
|
||||
}
|
||||
|
||||
DummyModelObject
|
||||
},
|
||||
#' Deserialize JSON string into an instance of DummyModel
|
||||
#'
|
||||
#' @description
|
||||
#' Deserialize JSON string into an instance of DummyModel
|
||||
#'
|
||||
#' @param input_json the JSON input
|
||||
#' @return the instance of DummyModel
|
||||
#' @export
|
||||
fromJSON = function(input_json) {
|
||||
this_object <- jsonlite::fromJSON(input_json)
|
||||
if (!is.null(this_object$`property`)) {
|
||||
self$`property` <- this_object$`property`
|
||||
}
|
||||
# process additional properties/fields in the payload
|
||||
for (key in names(this_object)) {
|
||||
if (!(key %in% self$`_field_list`)) { # json key not in list of fields
|
||||
self$additional_properties[[key]] <- this_object[[key]]
|
||||
}
|
||||
}
|
||||
|
||||
self
|
||||
},
|
||||
#' To JSON string
|
||||
#'
|
||||
#' @description
|
||||
#' To JSON String
|
||||
#'
|
||||
#' @return DummyModel in JSON format
|
||||
#' @export
|
||||
toJSONString = function() {
|
||||
jsoncontent <- c(
|
||||
if (!is.null(self$`property`)) {
|
||||
sprintf(
|
||||
'"property":
|
||||
"%s"
|
||||
',
|
||||
self$`property`
|
||||
)
|
||||
}
|
||||
)
|
||||
jsoncontent <- paste(jsoncontent, collapse = ",")
|
||||
json_string <- as.character(jsonlite::minify(paste("{", jsoncontent, "}", sep = "")))
|
||||
json_obj <- jsonlite::fromJSON(json_string)
|
||||
for (key in names(self$additional_properties)) {
|
||||
json_obj[[key]] <- self$additional_properties[[key]]
|
||||
}
|
||||
json_string <- as.character(jsonlite::minify(jsonlite::toJSON(json_obj, auto_unbox = TRUE, digits = NA)))
|
||||
},
|
||||
#' Deserialize JSON string into an instance of DummyModel
|
||||
#'
|
||||
#' @description
|
||||
#' Deserialize JSON string into an instance of DummyModel
|
||||
#'
|
||||
#' @param input_json the JSON input
|
||||
#' @return the instance of DummyModel
|
||||
#' @export
|
||||
fromJSONString = function(input_json) {
|
||||
this_object <- jsonlite::fromJSON(input_json)
|
||||
self$`property` <- this_object$`property`
|
||||
# process additional properties/fields in the payload
|
||||
for (key in names(this_object)) {
|
||||
if (!(key %in% self$`_field_list`)) { # json key not in list of fields
|
||||
self$additional_properties[[key]] <- this_object[[key]]
|
||||
}
|
||||
}
|
||||
|
||||
self
|
||||
},
|
||||
#' Validate JSON input with respect to DummyModel
|
||||
#'
|
||||
#' @description
|
||||
#' Validate JSON input with respect to DummyModel and throw an exception if invalid
|
||||
#'
|
||||
#' @param input the JSON input
|
||||
#' @export
|
||||
validateJSON = function(input) {
|
||||
input_json <- jsonlite::fromJSON(input)
|
||||
},
|
||||
#' To string (JSON format)
|
||||
#'
|
||||
#' @description
|
||||
#' To string (JSON format)
|
||||
#'
|
||||
#' @return String representation of DummyModel
|
||||
#' @export
|
||||
toString = function() {
|
||||
self$toJSONString()
|
||||
},
|
||||
#' Return true if the values in all fields are valid.
|
||||
#'
|
||||
#' @description
|
||||
#' Return true if the values in all fields are valid.
|
||||
#'
|
||||
#' @return true if the values in all fields are valid.
|
||||
#' @export
|
||||
isValid = function() {
|
||||
TRUE
|
||||
},
|
||||
#' Return a list of invalid fields (if any).
|
||||
#'
|
||||
#' @description
|
||||
#' Return a list of invalid fields (if any).
|
||||
#'
|
||||
#' @return A list of invalid fields (if any).
|
||||
#' @export
|
||||
getInvalidFields = function() {
|
||||
invalid_fields <- list()
|
||||
invalid_fields
|
||||
},
|
||||
#' Print the object
|
||||
#'
|
||||
#' @description
|
||||
#' Print the object
|
||||
#'
|
||||
#' @export
|
||||
print = function() {
|
||||
print(jsonlite::prettify(self$toJSONString()))
|
||||
invisible(self)
|
||||
}
|
||||
),
|
||||
# Lock the class to prevent modifications to the method or field
|
||||
lock_class = TRUE
|
||||
)
|
||||
## Uncomment below to unlock the class to allow modifications of the method or field
|
||||
# DummyModel$unlock()
|
||||
#
|
||||
## Below is an example to define the print function
|
||||
# DummyModel$set("public", "print", function(...) {
|
||||
# print(jsonlite::prettify(self$toJSONString()))
|
||||
# invisible(self)
|
||||
# })
|
||||
## Uncomment below to lock the class to prevent modifications to the method or field
|
||||
# DummyModel$lock()
|
||||
|
@ -113,6 +113,7 @@ Class | Method | HTTP request | Description
|
||||
- [DanishPig](docs/DanishPig.md)
|
||||
- [Date](docs/Date.md)
|
||||
- [Dog](docs/Dog.md)
|
||||
- [DummyModel](docs/DummyModel.md)
|
||||
- [FormatTest](docs/FormatTest.md)
|
||||
- [Mammal](docs/Mammal.md)
|
||||
- [ModelApiResponse](docs/ModelApiResponse.md)
|
||||
|
10
samples/client/petstore/R-httr2-wrapper/docs/DummyModel.md
Normal file
10
samples/client/petstore/R-httr2-wrapper/docs/DummyModel.md
Normal file
@ -0,0 +1,10 @@
|
||||
# petstore::DummyModel
|
||||
|
||||
to test the model name mapping
|
||||
|
||||
## Properties
|
||||
Name | Type | Description | Notes
|
||||
------------ | ------------- | ------------- | -------------
|
||||
**property** | **character** | | [optional]
|
||||
|
||||
|
@ -0,0 +1,13 @@
|
||||
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
||||
# Please update as you see appropriate
|
||||
|
||||
context("Test DummyModel")
|
||||
|
||||
model_instance <- DummyModel$new()
|
||||
|
||||
test_that("property", {
|
||||
# tests for the property `property` (character)
|
||||
|
||||
# uncomment below to test the property
|
||||
#expect_equal(model.instance$`property`, "EXPECTED_RESULT")
|
||||
})
|
@ -20,6 +20,7 @@ R/date.R
|
||||
R/dog.R
|
||||
R/fake_api.R
|
||||
R/format_test.R
|
||||
R/just_model.R
|
||||
R/mammal.R
|
||||
R/model_api_response.R
|
||||
R/nested_one_of.R
|
||||
@ -49,6 +50,7 @@ docs/Date.md
|
||||
docs/Dog.md
|
||||
docs/FakeApi.md
|
||||
docs/FormatTest.md
|
||||
docs/JustModel.md
|
||||
docs/Mammal.md
|
||||
docs/ModelApiResponse.md
|
||||
docs/NestedOneOf.md
|
||||
|
@ -25,6 +25,7 @@ export(DanishPig)
|
||||
export(Date)
|
||||
export(Dog)
|
||||
export(FormatTest)
|
||||
export(JustModel)
|
||||
export(Mammal)
|
||||
export(ModelApiResponse)
|
||||
export(NestedOneOf)
|
||||
|
@ -8,7 +8,7 @@
|
||||
#' @description Date Class
|
||||
#' @format An \code{R6Class} generator object
|
||||
#' @field className character
|
||||
#' @field percent_description using \% in the description character [optional]
|
||||
#' @field percent using \% in the description character [optional]
|
||||
#' @field url_property character
|
||||
#' @importFrom R6 R6Class
|
||||
#' @importFrom jsonlite fromJSON toJSON
|
||||
@ -17,7 +17,7 @@ Date <- R6::R6Class(
|
||||
"Date",
|
||||
public = list(
|
||||
`className` = NULL,
|
||||
`percent_description` = NULL,
|
||||
`percent` = NULL,
|
||||
`url_property` = NULL,
|
||||
#' Initialize a new Date class.
|
||||
#'
|
||||
@ -26,10 +26,10 @@ Date <- R6::R6Class(
|
||||
#'
|
||||
#' @param className className
|
||||
#' @param url_property url_property
|
||||
#' @param percent_description using \% in the description
|
||||
#' @param percent using \% in the description
|
||||
#' @param ... Other optional arguments.
|
||||
#' @export
|
||||
initialize = function(`className`, `url_property`, `percent_description` = NULL, ...) {
|
||||
initialize = function(`className`, `url_property`, `percent` = NULL, ...) {
|
||||
if (!missing(`className`)) {
|
||||
if (!(is.character(`className`) && length(`className`) == 1)) {
|
||||
stop(paste("Error! Invalid data for `className`. Must be a string:", `className`))
|
||||
@ -46,11 +46,11 @@ Date <- R6::R6Class(
|
||||
}
|
||||
self$`url_property` <- `url_property`
|
||||
}
|
||||
if (!is.null(`percent_description`)) {
|
||||
if (!(is.character(`percent_description`) && length(`percent_description`) == 1)) {
|
||||
stop(paste("Error! Invalid data for `percent_description`. Must be a string:", `percent_description`))
|
||||
if (!is.null(`percent`)) {
|
||||
if (!(is.character(`percent`) && length(`percent`) == 1)) {
|
||||
stop(paste("Error! Invalid data for `percent`. Must be a string:", `percent`))
|
||||
}
|
||||
self$`percent_description` <- `percent_description`
|
||||
self$`percent` <- `percent`
|
||||
}
|
||||
},
|
||||
#' To JSON string
|
||||
@ -66,9 +66,9 @@ Date <- R6::R6Class(
|
||||
DateObject[["className"]] <-
|
||||
self$`className`
|
||||
}
|
||||
if (!is.null(self$`percent_description`)) {
|
||||
if (!is.null(self$`percent`)) {
|
||||
DateObject[["percent_description"]] <-
|
||||
self$`percent_description`
|
||||
self$`percent`
|
||||
}
|
||||
if (!is.null(self$`url_property`)) {
|
||||
DateObject[["url_property"]] <-
|
||||
@ -90,7 +90,7 @@ Date <- R6::R6Class(
|
||||
self$`className` <- this_object$`className`
|
||||
}
|
||||
if (!is.null(this_object$`percent_description`)) {
|
||||
self$`percent_description` <- this_object$`percent_description`
|
||||
self$`percent` <- this_object$`percent_description`
|
||||
}
|
||||
if (!is.null(this_object$`url_property`)) {
|
||||
# to validate URL. ref: https://stackoverflow.com/questions/73952024/url-validation-in-r
|
||||
@ -118,12 +118,12 @@ Date <- R6::R6Class(
|
||||
self$`className`
|
||||
)
|
||||
},
|
||||
if (!is.null(self$`percent_description`)) {
|
||||
if (!is.null(self$`percent`)) {
|
||||
sprintf(
|
||||
'"percent_description":
|
||||
"%s"
|
||||
',
|
||||
self$`percent_description`
|
||||
self$`percent`
|
||||
)
|
||||
},
|
||||
if (!is.null(self$`url_property`)) {
|
||||
@ -149,7 +149,7 @@ Date <- R6::R6Class(
|
||||
fromJSONString = function(input_json) {
|
||||
this_object <- jsonlite::fromJSON(input_json)
|
||||
self$`className` <- this_object$`className`
|
||||
self$`percent_description` <- this_object$`percent_description`
|
||||
self$`percent` <- this_object$`percent`
|
||||
# to validate URL. ref: https://stackoverflow.com/questions/73952024/url-validation-in-r
|
||||
if (!stringr::str_detect(this_object$`url_property`, "(https?|ftp)://[^ /$.?#].[^\\s]*")) {
|
||||
stop(paste("Error! Invalid data for `url_property`. Must be a URL:", this_object$`url_property`))
|
||||
|
@ -61,7 +61,7 @@
|
||||
#'
|
||||
#'
|
||||
#' \itemize{
|
||||
#' \item \emph{ @param } path_array list( character )
|
||||
#' \item \emph{ @param } path_array_parameter list( character )
|
||||
#'
|
||||
#' \item On encountering errors, an error of subclass ApiException will be thrown.
|
||||
#'
|
||||
@ -188,14 +188,14 @@
|
||||
#' #################### fake_path_array ####################
|
||||
#'
|
||||
#' library(petstore)
|
||||
#' var_path_array <- c("inner_example") # array[character] | dummy path parameter
|
||||
#' var_path_array_parameter <- c("inner_example") # array[character] | dummy path parameter
|
||||
#'
|
||||
#' #test array parameter in path
|
||||
#' api_instance <- FakeApi$new()
|
||||
#'
|
||||
#' result <- tryCatch(
|
||||
#'
|
||||
#' api_instance$fake_path_array(var_path_array),
|
||||
#' api_instance$fake_path_array(var_path_array_parameter),
|
||||
#' ApiException = function(ex) ex
|
||||
#' )
|
||||
#' # In case of error, print the error object
|
||||
@ -525,12 +525,12 @@ FakeApi <- R6::R6Class(
|
||||
#' @description
|
||||
#' test array parameter in path
|
||||
#'
|
||||
#' @param path_array dummy path parameter
|
||||
#' @param path_array_parameter dummy path parameter
|
||||
#' @param ... Other optional arguments
|
||||
#' @return void
|
||||
#' @export
|
||||
fake_path_array = function(path_array, ...) {
|
||||
local_var_response <- self$fake_path_array_with_http_info(path_array, ...)
|
||||
fake_path_array = function(path_array_parameter, ...) {
|
||||
local_var_response <- self$fake_path_array_with_http_info(path_array_parameter, ...)
|
||||
if (local_var_response$status_code >= 200 && local_var_response$status_code <= 299) {
|
||||
local_var_response$content
|
||||
} else if (local_var_response$status_code >= 300 && local_var_response$status_code <= 399) {
|
||||
@ -546,11 +546,11 @@ FakeApi <- R6::R6Class(
|
||||
#' @description
|
||||
#' test array parameter in path
|
||||
#'
|
||||
#' @param path_array dummy path parameter
|
||||
#' @param path_array_parameter dummy path parameter
|
||||
#' @param ... Other optional arguments
|
||||
#' @return API response (void) with additional information such as HTTP status code, headers
|
||||
#' @export
|
||||
fake_path_array_with_http_info = function(path_array, ...) {
|
||||
fake_path_array_with_http_info = function(path_array_parameter, ...) {
|
||||
args <- list(...)
|
||||
query_params <- list()
|
||||
header_params <- c()
|
||||
@ -560,17 +560,17 @@ FakeApi <- R6::R6Class(
|
||||
oauth_scopes <- NULL
|
||||
is_oauth <- FALSE
|
||||
|
||||
if (missing(`path_array`)) {
|
||||
rlang::abort(message = "Missing required parameter `path_array`.",
|
||||
if (missing(`path_array_parameter`)) {
|
||||
rlang::abort(message = "Missing required parameter `path_array_parameter`.",
|
||||
.subclass = "ApiException",
|
||||
ApiException = ApiException$new(status = 0,
|
||||
reason = "Missing required parameter `path_array`."))
|
||||
reason = "Missing required parameter `path_array_parameter`."))
|
||||
}
|
||||
|
||||
|
||||
local_var_url_path <- "/fake/path_array/{path_array}/testing"
|
||||
if (!missing(`path_array`)) {
|
||||
local_var_url_path <- gsub("\\{path_array\\}", paste(URLencode(as.character(`path_array`), reserved = TRUE), collapse= ",", sep=""), local_var_url_path)
|
||||
if (!missing(`path_array_parameter`)) {
|
||||
local_var_url_path <- gsub("\\{path_array\\}", paste(URLencode(as.character(`path_array_parameter`), reserved = TRUE), collapse= ",", sep=""), local_var_url_path)
|
||||
}
|
||||
|
||||
|
||||
|
163
samples/client/petstore/R-httr2/R/just_model.R
Normal file
163
samples/client/petstore/R-httr2/R/just_model.R
Normal file
@ -0,0 +1,163 @@
|
||||
#' Create a new JustModel
|
||||
#'
|
||||
#' @description
|
||||
#' to test the model name mapping
|
||||
#'
|
||||
#' @docType class
|
||||
#' @title JustModel
|
||||
#' @description JustModel Class
|
||||
#' @format An \code{R6Class} generator object
|
||||
#' @field property character [optional]
|
||||
#' @importFrom R6 R6Class
|
||||
#' @importFrom jsonlite fromJSON toJSON
|
||||
#' @export
|
||||
JustModel <- R6::R6Class(
|
||||
"JustModel",
|
||||
public = list(
|
||||
`property` = NULL,
|
||||
#' Initialize a new JustModel class.
|
||||
#'
|
||||
#' @description
|
||||
#' Initialize a new JustModel class.
|
||||
#'
|
||||
#' @param property property
|
||||
#' @param ... Other optional arguments.
|
||||
#' @export
|
||||
initialize = function(`property` = NULL, ...) {
|
||||
if (!is.null(`property`)) {
|
||||
if (!(is.character(`property`) && length(`property`) == 1)) {
|
||||
stop(paste("Error! Invalid data for `property`. Must be a string:", `property`))
|
||||
}
|
||||
self$`property` <- `property`
|
||||
}
|
||||
},
|
||||
#' To JSON string
|
||||
#'
|
||||
#' @description
|
||||
#' To JSON String
|
||||
#'
|
||||
#' @return JustModel in JSON format
|
||||
#' @export
|
||||
toJSON = function() {
|
||||
JustModelObject <- list()
|
||||
if (!is.null(self$`property`)) {
|
||||
JustModelObject[["property"]] <-
|
||||
self$`property`
|
||||
}
|
||||
JustModelObject
|
||||
},
|
||||
#' Deserialize JSON string into an instance of JustModel
|
||||
#'
|
||||
#' @description
|
||||
#' Deserialize JSON string into an instance of JustModel
|
||||
#'
|
||||
#' @param input_json the JSON input
|
||||
#' @return the instance of JustModel
|
||||
#' @export
|
||||
fromJSON = function(input_json) {
|
||||
this_object <- jsonlite::fromJSON(input_json)
|
||||
if (!is.null(this_object$`property`)) {
|
||||
self$`property` <- this_object$`property`
|
||||
}
|
||||
self
|
||||
},
|
||||
#' To JSON string
|
||||
#'
|
||||
#' @description
|
||||
#' To JSON String
|
||||
#'
|
||||
#' @return JustModel in JSON format
|
||||
#' @export
|
||||
toJSONString = function() {
|
||||
jsoncontent <- c(
|
||||
if (!is.null(self$`property`)) {
|
||||
sprintf(
|
||||
'"property":
|
||||
"%s"
|
||||
',
|
||||
self$`property`
|
||||
)
|
||||
}
|
||||
)
|
||||
jsoncontent <- paste(jsoncontent, collapse = ",")
|
||||
json_string <- as.character(jsonlite::minify(paste("{", jsoncontent, "}", sep = "")))
|
||||
},
|
||||
#' Deserialize JSON string into an instance of JustModel
|
||||
#'
|
||||
#' @description
|
||||
#' Deserialize JSON string into an instance of JustModel
|
||||
#'
|
||||
#' @param input_json the JSON input
|
||||
#' @return the instance of JustModel
|
||||
#' @export
|
||||
fromJSONString = function(input_json) {
|
||||
this_object <- jsonlite::fromJSON(input_json)
|
||||
self$`property` <- this_object$`property`
|
||||
self
|
||||
},
|
||||
#' Validate JSON input with respect to JustModel
|
||||
#'
|
||||
#' @description
|
||||
#' Validate JSON input with respect to JustModel and throw an exception if invalid
|
||||
#'
|
||||
#' @param input the JSON input
|
||||
#' @export
|
||||
validateJSON = function(input) {
|
||||
input_json <- jsonlite::fromJSON(input)
|
||||
},
|
||||
#' To string (JSON format)
|
||||
#'
|
||||
#' @description
|
||||
#' To string (JSON format)
|
||||
#'
|
||||
#' @return String representation of JustModel
|
||||
#' @export
|
||||
toString = function() {
|
||||
self$toJSONString()
|
||||
},
|
||||
#' Return true if the values in all fields are valid.
|
||||
#'
|
||||
#' @description
|
||||
#' Return true if the values in all fields are valid.
|
||||
#'
|
||||
#' @return true if the values in all fields are valid.
|
||||
#' @export
|
||||
isValid = function() {
|
||||
TRUE
|
||||
},
|
||||
#' Return a list of invalid fields (if any).
|
||||
#'
|
||||
#' @description
|
||||
#' Return a list of invalid fields (if any).
|
||||
#'
|
||||
#' @return A list of invalid fields (if any).
|
||||
#' @export
|
||||
getInvalidFields = function() {
|
||||
invalid_fields <- list()
|
||||
invalid_fields
|
||||
},
|
||||
#' Print the object
|
||||
#'
|
||||
#' @description
|
||||
#' Print the object
|
||||
#'
|
||||
#' @export
|
||||
print = function() {
|
||||
print(jsonlite::prettify(self$toJSONString()))
|
||||
invisible(self)
|
||||
}
|
||||
),
|
||||
# Lock the class to prevent modifications to the method or field
|
||||
lock_class = TRUE
|
||||
)
|
||||
## Uncomment below to unlock the class to allow modifications of the method or field
|
||||
# JustModel$unlock()
|
||||
#
|
||||
## Below is an example to define the print function
|
||||
# JustModel$set("public", "print", function(...) {
|
||||
# print(jsonlite::prettify(self$toJSONString()))
|
||||
# invisible(self)
|
||||
# })
|
||||
## Uncomment below to lock the class to prevent modifications to the method or field
|
||||
# JustModel$lock()
|
||||
|
@ -114,6 +114,7 @@ Class | Method | HTTP request | Description
|
||||
- [Date](docs/Date.md)
|
||||
- [Dog](docs/Dog.md)
|
||||
- [FormatTest](docs/FormatTest.md)
|
||||
- [JustModel](docs/JustModel.md)
|
||||
- [Mammal](docs/Mammal.md)
|
||||
- [ModelApiResponse](docs/ModelApiResponse.md)
|
||||
- [NestedOneOf](docs/NestedOneOf.md)
|
||||
|
@ -6,7 +6,7 @@ to test the model name `Date`
|
||||
Name | Type | Description | Notes
|
||||
------------ | ------------- | ------------- | -------------
|
||||
**className** | **character** | |
|
||||
**percent_description** | **character** | using % in the description | [optional]
|
||||
**percent** | **character** | using % in the description | [optional]
|
||||
**url_property** | **character** | |
|
||||
|
||||
|
||||
|
@ -140,7 +140,7 @@ No authorization required
|
||||
| **200** | successful operation | - |
|
||||
|
||||
# **fake_path_array**
|
||||
> fake_path_array(path_array)
|
||||
> fake_path_array(path_array_parameter)
|
||||
|
||||
test array parameter in path
|
||||
|
||||
@ -153,11 +153,11 @@ library(petstore)
|
||||
# test array parameter in path
|
||||
#
|
||||
# prepare function argument(s)
|
||||
var_path_array <- c("inner_example") # array[character] | dummy path parameter
|
||||
var_path_array_parameter <- c("inner_example") # array[character] | dummy path parameter
|
||||
|
||||
api_instance <- FakeApi$new()
|
||||
result <- tryCatch(
|
||||
api_instance$fake_path_array(var_path_array),
|
||||
api_instance$fake_path_array(var_path_array_parameter),
|
||||
ApiException = function(ex) ex
|
||||
)
|
||||
# In case of error, print the error object
|
||||
@ -174,7 +174,7 @@ if (!is.null(result$ApiException)) {
|
||||
|
||||
Name | Type | Description | Notes
|
||||
------------- | ------------- | ------------- | -------------
|
||||
**path_array** | list( **character** )| dummy path parameter |
|
||||
**path_array_parameter** | list( **character** )| dummy path parameter |
|
||||
|
||||
### Return type
|
||||
|
||||
|
10
samples/client/petstore/R-httr2/docs/JustModel.md
Normal file
10
samples/client/petstore/R-httr2/docs/JustModel.md
Normal file
@ -0,0 +1,10 @@
|
||||
# petstore::JustModel
|
||||
|
||||
to test the model name mapping
|
||||
|
||||
## Properties
|
||||
Name | Type | Description | Notes
|
||||
------------ | ------------- | ------------- | -------------
|
||||
**property** | **character** | | [optional]
|
||||
|
||||
|
@ -0,0 +1,13 @@
|
||||
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
||||
# Please update as you see appropriate
|
||||
|
||||
context("Test JustModel")
|
||||
|
||||
model_instance <- JustModel$new()
|
||||
|
||||
test_that("property", {
|
||||
# tests for the property `property` (character)
|
||||
|
||||
# uncomment below to test the property
|
||||
#expect_equal(model.instance$`property`, "EXPECTED_RESULT")
|
||||
})
|
@ -18,6 +18,7 @@ R/category.R
|
||||
R/danish_pig.R
|
||||
R/date.R
|
||||
R/dog.R
|
||||
R/dummy_model.R
|
||||
R/fake_api.R
|
||||
R/format_test.R
|
||||
R/mammal.R
|
||||
@ -47,6 +48,7 @@ docs/Category.md
|
||||
docs/DanishPig.md
|
||||
docs/Date.md
|
||||
docs/Dog.md
|
||||
docs/DummyModel.md
|
||||
docs/FakeApi.md
|
||||
docs/FormatTest.md
|
||||
docs/Mammal.md
|
||||
|
@ -24,6 +24,7 @@ export(Category)
|
||||
export(DanishPig)
|
||||
export(Date)
|
||||
export(Dog)
|
||||
export(DummyModel)
|
||||
export(FormatTest)
|
||||
export(Mammal)
|
||||
export(ModelApiResponse)
|
||||
|
196
samples/client/petstore/R/R/dummy_model.R
Normal file
196
samples/client/petstore/R/R/dummy_model.R
Normal file
@ -0,0 +1,196 @@
|
||||
#' Create a new DummyModel
|
||||
#'
|
||||
#' @description
|
||||
#' to test the model name mapping
|
||||
#'
|
||||
#' @docType class
|
||||
#' @title DummyModel
|
||||
#' @description DummyModel Class
|
||||
#' @format An \code{R6Class} generator object
|
||||
#' @field property character [optional]
|
||||
#' @field _field_list a list of fields list(character)
|
||||
#' @field additional_properties additional properties list(character) [optional]
|
||||
#' @importFrom R6 R6Class
|
||||
#' @importFrom jsonlite fromJSON toJSON
|
||||
#' @export
|
||||
DummyModel <- R6::R6Class(
|
||||
"DummyModel",
|
||||
public = list(
|
||||
`property` = NULL,
|
||||
`_field_list` = c("property"),
|
||||
`additional_properties` = list(),
|
||||
#' Initialize a new DummyModel class.
|
||||
#'
|
||||
#' @description
|
||||
#' Initialize a new DummyModel class.
|
||||
#'
|
||||
#' @param property property
|
||||
#' @param additional_properties additional properties (optional)
|
||||
#' @param ... Other optional arguments.
|
||||
#' @export
|
||||
initialize = function(`property` = NULL, additional_properties = NULL, ...) {
|
||||
if (!is.null(`property`)) {
|
||||
if (!(is.character(`property`) && length(`property`) == 1)) {
|
||||
stop(paste("Error! Invalid data for `property`. Must be a string:", `property`))
|
||||
}
|
||||
self$`property` <- `property`
|
||||
}
|
||||
if (!is.null(additional_properties)) {
|
||||
for (key in names(additional_properties)) {
|
||||
self$additional_properties[[key]] <- additional_properties[[key]]
|
||||
}
|
||||
}
|
||||
},
|
||||
#' To JSON string
|
||||
#'
|
||||
#' @description
|
||||
#' To JSON String
|
||||
#'
|
||||
#' @return DummyModel in JSON format
|
||||
#' @export
|
||||
toJSON = function() {
|
||||
DummyModelObject <- list()
|
||||
if (!is.null(self$`property`)) {
|
||||
DummyModelObject[["property"]] <-
|
||||
self$`property`
|
||||
}
|
||||
for (key in names(self$additional_properties)) {
|
||||
DummyModelObject[[key]] <- self$additional_properties[[key]]
|
||||
}
|
||||
|
||||
DummyModelObject
|
||||
},
|
||||
#' Deserialize JSON string into an instance of DummyModel
|
||||
#'
|
||||
#' @description
|
||||
#' Deserialize JSON string into an instance of DummyModel
|
||||
#'
|
||||
#' @param input_json the JSON input
|
||||
#' @return the instance of DummyModel
|
||||
#' @export
|
||||
fromJSON = function(input_json) {
|
||||
this_object <- jsonlite::fromJSON(input_json)
|
||||
if (!is.null(this_object$`property`)) {
|
||||
self$`property` <- this_object$`property`
|
||||
}
|
||||
# process additional properties/fields in the payload
|
||||
for (key in names(this_object)) {
|
||||
if (!(key %in% self$`_field_list`)) { # json key not in list of fields
|
||||
self$additional_properties[[key]] <- this_object[[key]]
|
||||
}
|
||||
}
|
||||
|
||||
self
|
||||
},
|
||||
#' To JSON string
|
||||
#'
|
||||
#' @description
|
||||
#' To JSON String
|
||||
#'
|
||||
#' @return DummyModel in JSON format
|
||||
#' @export
|
||||
toJSONString = function() {
|
||||
jsoncontent <- c(
|
||||
if (!is.null(self$`property`)) {
|
||||
sprintf(
|
||||
'"property":
|
||||
"%s"
|
||||
',
|
||||
self$`property`
|
||||
)
|
||||
}
|
||||
)
|
||||
jsoncontent <- paste(jsoncontent, collapse = ",")
|
||||
json_string <- as.character(jsonlite::minify(paste("{", jsoncontent, "}", sep = "")))
|
||||
json_obj <- jsonlite::fromJSON(json_string)
|
||||
for (key in names(self$additional_properties)) {
|
||||
json_obj[[key]] <- self$additional_properties[[key]]
|
||||
}
|
||||
json_string <- as.character(jsonlite::minify(jsonlite::toJSON(json_obj, auto_unbox = TRUE, digits = NA)))
|
||||
},
|
||||
#' Deserialize JSON string into an instance of DummyModel
|
||||
#'
|
||||
#' @description
|
||||
#' Deserialize JSON string into an instance of DummyModel
|
||||
#'
|
||||
#' @param input_json the JSON input
|
||||
#' @return the instance of DummyModel
|
||||
#' @export
|
||||
fromJSONString = function(input_json) {
|
||||
this_object <- jsonlite::fromJSON(input_json)
|
||||
self$`property` <- this_object$`property`
|
||||
# process additional properties/fields in the payload
|
||||
for (key in names(this_object)) {
|
||||
if (!(key %in% self$`_field_list`)) { # json key not in list of fields
|
||||
self$additional_properties[[key]] <- this_object[[key]]
|
||||
}
|
||||
}
|
||||
|
||||
self
|
||||
},
|
||||
#' Validate JSON input with respect to DummyModel
|
||||
#'
|
||||
#' @description
|
||||
#' Validate JSON input with respect to DummyModel and throw an exception if invalid
|
||||
#'
|
||||
#' @param input the JSON input
|
||||
#' @export
|
||||
validateJSON = function(input) {
|
||||
input_json <- jsonlite::fromJSON(input)
|
||||
},
|
||||
#' To string (JSON format)
|
||||
#'
|
||||
#' @description
|
||||
#' To string (JSON format)
|
||||
#'
|
||||
#' @return String representation of DummyModel
|
||||
#' @export
|
||||
toString = function() {
|
||||
self$toJSONString()
|
||||
},
|
||||
#' Return true if the values in all fields are valid.
|
||||
#'
|
||||
#' @description
|
||||
#' Return true if the values in all fields are valid.
|
||||
#'
|
||||
#' @return true if the values in all fields are valid.
|
||||
#' @export
|
||||
isValid = function() {
|
||||
TRUE
|
||||
},
|
||||
#' Return a list of invalid fields (if any).
|
||||
#'
|
||||
#' @description
|
||||
#' Return a list of invalid fields (if any).
|
||||
#'
|
||||
#' @return A list of invalid fields (if any).
|
||||
#' @export
|
||||
getInvalidFields = function() {
|
||||
invalid_fields <- list()
|
||||
invalid_fields
|
||||
},
|
||||
#' Print the object
|
||||
#'
|
||||
#' @description
|
||||
#' Print the object
|
||||
#'
|
||||
#' @export
|
||||
print = function() {
|
||||
print(jsonlite::prettify(self$toJSONString()))
|
||||
invisible(self)
|
||||
}
|
||||
),
|
||||
# Lock the class to prevent modifications to the method or field
|
||||
lock_class = TRUE
|
||||
)
|
||||
## Uncomment below to unlock the class to allow modifications of the method or field
|
||||
# DummyModel$unlock()
|
||||
#
|
||||
## Below is an example to define the print function
|
||||
# DummyModel$set("public", "print", function(...) {
|
||||
# print(jsonlite::prettify(self$toJSONString()))
|
||||
# invisible(self)
|
||||
# })
|
||||
## Uncomment below to lock the class to prevent modifications to the method or field
|
||||
# DummyModel$lock()
|
||||
|
@ -113,6 +113,7 @@ Class | Method | HTTP request | Description
|
||||
- [DanishPig](docs/DanishPig.md)
|
||||
- [Date](docs/Date.md)
|
||||
- [Dog](docs/Dog.md)
|
||||
- [DummyModel](docs/DummyModel.md)
|
||||
- [FormatTest](docs/FormatTest.md)
|
||||
- [Mammal](docs/Mammal.md)
|
||||
- [ModelApiResponse](docs/ModelApiResponse.md)
|
||||
|
10
samples/client/petstore/R/docs/DummyModel.md
Normal file
10
samples/client/petstore/R/docs/DummyModel.md
Normal file
@ -0,0 +1,10 @@
|
||||
# petstore::DummyModel
|
||||
|
||||
to test the model name mapping
|
||||
|
||||
## Properties
|
||||
Name | Type | Description | Notes
|
||||
------------ | ------------- | ------------- | -------------
|
||||
**property** | **character** | | [optional]
|
||||
|
||||
|
13
samples/client/petstore/R/tests/testthat/test_dummy_model.R
Normal file
13
samples/client/petstore/R/tests/testthat/test_dummy_model.R
Normal file
@ -0,0 +1,13 @@
|
||||
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
||||
# Please update as you see appropriate
|
||||
|
||||
context("Test DummyModel")
|
||||
|
||||
model_instance <- DummyModel$new()
|
||||
|
||||
test_that("property", {
|
||||
# tests for the property `property` (character)
|
||||
|
||||
# uncomment below to test the property
|
||||
#expect_equal(model.instance$`property`, "EXPECTED_RESULT")
|
||||
})
|
Loading…
x
Reference in New Issue
Block a user