forked from loafle/openapi-generator-original
parent
4f732c53e1
commit
e6dd608897
@ -173,6 +173,11 @@ public abstract class AbstractRustCodegen extends DefaultCodegen implements Code
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toEnumVarName(String name, String datatype) {
|
public String toEnumVarName(String name, String datatype) {
|
||||||
|
// Empty strings need to be mapped to "Empty"
|
||||||
|
// https://github.com/OpenAPITools/openapi-generator/issues/13453
|
||||||
|
if (Strings.isNullOrEmpty(name)) {
|
||||||
|
return "Empty";
|
||||||
|
}
|
||||||
// Rust Enum variants should be camel cased
|
// Rust Enum variants should be camel cased
|
||||||
return sanitizeIdentifier(name, CasingType.CAMEL_CASE, "variant", "enum variant", true);
|
return sanitizeIdentifier(name, CasingType.CAMEL_CASE, "variant", "enum variant", true);
|
||||||
}
|
}
|
||||||
|
@ -117,6 +117,9 @@ public class AbstractRustCodegenTest {
|
|||||||
Assert.assertEquals(fakeRustCodegen.toEnumVarName("SCREAMING_SNAKE_CASE", null), "ScreamingSnakeCase");
|
Assert.assertEquals(fakeRustCodegen.toEnumVarName("SCREAMING_SNAKE_CASE", null), "ScreamingSnakeCase");
|
||||||
// Prefix is added when starting with a number
|
// Prefix is added when starting with a number
|
||||||
Assert.assertEquals(fakeRustCodegen.toEnumVarName("1_pending", null), "Variant1Pending");
|
Assert.assertEquals(fakeRustCodegen.toEnumVarName("1_pending", null), "Variant1Pending");
|
||||||
|
// Empty strings need to be mapped to "Empty"
|
||||||
|
// https://github.com/OpenAPITools/openapi-generator/issues/13453
|
||||||
|
Assert.assertEquals(fakeRustCodegen.toEnumVarName("", null), "Empty");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -812,9 +812,11 @@ components:
|
|||||||
- $ref: '#/components/schemas/Baz'
|
- $ref: '#/components/schemas/Baz'
|
||||||
- nullable: false
|
- nullable: false
|
||||||
Baz:
|
Baz:
|
||||||
|
description: Test handling of empty variants
|
||||||
enum:
|
enum:
|
||||||
- A
|
- A
|
||||||
- B
|
- B
|
||||||
|
- ""
|
||||||
type: string
|
type: string
|
||||||
TypeTesting:
|
TypeTesting:
|
||||||
description: Test handling of different field data types
|
description: Test handling of different field data types
|
||||||
|
@ -1 +0,0 @@
|
|||||||
4.0.3-SNAPSHOT
|
|
@ -1,12 +0,0 @@
|
|||||||
# InlineObject
|
|
||||||
|
|
||||||
## Properties
|
|
||||||
|
|
||||||
Name | Type | Description | Notes
|
|
||||||
------------ | ------------- | ------------- | -------------
|
|
||||||
**name** | **String** | Updated name of the pet | [optional]
|
|
||||||
**status** | **String** | Updated status of the pet | [optional]
|
|
||||||
|
|
||||||
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
|
||||||
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
|||||||
# InlineObject1
|
|
||||||
|
|
||||||
## Properties
|
|
||||||
|
|
||||||
Name | Type | Description | Notes
|
|
||||||
------------ | ------------- | ------------- | -------------
|
|
||||||
**additional_metadata** | **String** | Additional data to pass to server | [optional]
|
|
||||||
**file** | [***std::path::PathBuf**](std::path::PathBuf.md) | file to upload | [optional]
|
|
||||||
|
|
||||||
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
|
||||||
|
|
||||||
|
|
@ -8,14 +8,17 @@
|
|||||||
* Generated by: https://openapi-generator.tech
|
* Generated by: https://openapi-generator.tech
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/// Baz : Test handling of empty variants
|
||||||
|
|
||||||
///
|
/// Test handling of empty variants
|
||||||
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
|
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
|
||||||
pub enum Baz {
|
pub enum Baz {
|
||||||
#[serde(rename = "A")]
|
#[serde(rename = "A")]
|
||||||
A,
|
A,
|
||||||
#[serde(rename = "B")]
|
#[serde(rename = "B")]
|
||||||
B,
|
B,
|
||||||
|
#[serde(rename = "")]
|
||||||
|
Empty,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -24,6 +27,7 @@ impl ToString for Baz {
|
|||||||
match self {
|
match self {
|
||||||
Self::A => String::from("A"),
|
Self::A => String::from("A"),
|
||||||
Self::B => String::from("B"),
|
Self::B => String::from("B"),
|
||||||
|
Self::Empty => String::from(""),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,14 +8,17 @@
|
|||||||
* Generated by: https://openapi-generator.tech
|
* Generated by: https://openapi-generator.tech
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/// Baz : Test handling of empty variants
|
||||||
|
|
||||||
///
|
/// Test handling of empty variants
|
||||||
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
|
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
|
||||||
pub enum Baz {
|
pub enum Baz {
|
||||||
#[serde(rename = "A")]
|
#[serde(rename = "A")]
|
||||||
A,
|
A,
|
||||||
#[serde(rename = "B")]
|
#[serde(rename = "B")]
|
||||||
B,
|
B,
|
||||||
|
#[serde(rename = "")]
|
||||||
|
Empty,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -24,6 +27,7 @@ impl ToString for Baz {
|
|||||||
match self {
|
match self {
|
||||||
Self::A => String::from("A"),
|
Self::A => String::from("A"),
|
||||||
Self::B => String::from("B"),
|
Self::B => String::from("B"),
|
||||||
|
Self::Empty => String::from(""),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,14 +8,17 @@
|
|||||||
* Generated by: https://openapi-generator.tech
|
* Generated by: https://openapi-generator.tech
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/// Baz : Test handling of empty variants
|
||||||
|
|
||||||
///
|
/// Test handling of empty variants
|
||||||
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
|
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
|
||||||
pub enum Baz {
|
pub enum Baz {
|
||||||
#[serde(rename = "A")]
|
#[serde(rename = "A")]
|
||||||
A,
|
A,
|
||||||
#[serde(rename = "B")]
|
#[serde(rename = "B")]
|
||||||
B,
|
B,
|
||||||
|
#[serde(rename = "")]
|
||||||
|
Empty,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -24,6 +27,7 @@ impl ToString for Baz {
|
|||||||
match self {
|
match self {
|
||||||
Self::A => String::from("A"),
|
Self::A => String::from("A"),
|
||||||
Self::B => String::from("B"),
|
Self::B => String::from("B"),
|
||||||
|
Self::Empty => String::from(""),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,14 +8,17 @@
|
|||||||
* Generated by: https://openapi-generator.tech
|
* Generated by: https://openapi-generator.tech
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/// Baz : Test handling of empty variants
|
||||||
|
|
||||||
///
|
/// Test handling of empty variants
|
||||||
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
|
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
|
||||||
pub enum Baz {
|
pub enum Baz {
|
||||||
#[serde(rename = "A")]
|
#[serde(rename = "A")]
|
||||||
A,
|
A,
|
||||||
#[serde(rename = "B")]
|
#[serde(rename = "B")]
|
||||||
B,
|
B,
|
||||||
|
#[serde(rename = "")]
|
||||||
|
Empty,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -24,6 +27,7 @@ impl ToString for Baz {
|
|||||||
match self {
|
match self {
|
||||||
Self::A => String::from("A"),
|
Self::A => String::from("A"),
|
||||||
Self::B => String::from("B"),
|
Self::B => String::from("B"),
|
||||||
|
Self::Empty => String::from(""),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,32 +0,0 @@
|
|||||||
/*
|
|
||||||
* OpenAPI Petstore
|
|
||||||
*
|
|
||||||
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
|
|
||||||
*
|
|
||||||
* The version of the OpenAPI document: 1.0.0
|
|
||||||
*
|
|
||||||
* Generated by: https://openapi-generator.tech
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
|
||||||
pub struct InlineObject {
|
|
||||||
/// Updated name of the pet
|
|
||||||
#[serde(rename = "name", skip_serializing_if = "Option::is_none")]
|
|
||||||
pub name: Option<String>,
|
|
||||||
/// Updated status of the pet
|
|
||||||
#[serde(rename = "status", skip_serializing_if = "Option::is_none")]
|
|
||||||
pub status: Option<String>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl InlineObject {
|
|
||||||
pub fn new() -> InlineObject {
|
|
||||||
InlineObject {
|
|
||||||
name: None,
|
|
||||||
status: None,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
|||||||
/*
|
|
||||||
* OpenAPI Petstore
|
|
||||||
*
|
|
||||||
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
|
|
||||||
*
|
|
||||||
* The version of the OpenAPI document: 1.0.0
|
|
||||||
*
|
|
||||||
* Generated by: https://openapi-generator.tech
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
|
||||||
pub struct InlineObject1 {
|
|
||||||
/// Additional data to pass to server
|
|
||||||
#[serde(rename = "additionalMetadata", skip_serializing_if = "Option::is_none")]
|
|
||||||
pub additional_metadata: Option<String>,
|
|
||||||
/// file to upload
|
|
||||||
#[serde(rename = "file", skip_serializing_if = "Option::is_none")]
|
|
||||||
pub file: Option<std::path::PathBuf>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl InlineObject1 {
|
|
||||||
pub fn new() -> InlineObject1 {
|
|
||||||
InlineObject1 {
|
|
||||||
additional_metadata: None,
|
|
||||||
file: None,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,118 @@
|
|||||||
|
/**
|
||||||
|
* OpenAPI Petstore
|
||||||
|
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
|
||||||
|
*
|
||||||
|
* The version of the OpenAPI document: 1.0.0
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* NOTE: This class is auto generated by OpenAPI-Generator 6.1.0-SNAPSHOT.
|
||||||
|
* https://openapi-generator.tech
|
||||||
|
* Do not edit the class manually.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#include "200_response.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
#include <map>
|
||||||
|
#include <sstream>
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <regex>
|
||||||
|
#include <boost/lexical_cast.hpp>
|
||||||
|
#include <boost/property_tree/ptree.hpp>
|
||||||
|
#include <boost/property_tree/json_parser.hpp>
|
||||||
|
#include "helpers.h"
|
||||||
|
|
||||||
|
using boost::property_tree::ptree;
|
||||||
|
using boost::property_tree::read_json;
|
||||||
|
using boost::property_tree::write_json;
|
||||||
|
|
||||||
|
namespace org {
|
||||||
|
namespace openapitools {
|
||||||
|
namespace server {
|
||||||
|
namespace model {
|
||||||
|
|
||||||
|
200_response::200_response(boost::property_tree::ptree const& pt)
|
||||||
|
{
|
||||||
|
fromPropertyTree(pt);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::string 200_response::toJsonString(bool prettyJson /* = false */) const
|
||||||
|
{
|
||||||
|
std::stringstream ss;
|
||||||
|
write_json(ss, this->toPropertyTree(), prettyJson);
|
||||||
|
// workaround inspired by: https://stackoverflow.com/a/56395440
|
||||||
|
std::regex reg("\\\"([0-9]+\\.{0,1}[0-9]*)\\\"");
|
||||||
|
std::string result = std::regex_replace(ss.str(), reg, "$1");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
void 200_response::fromJsonString(std::string const& jsonString)
|
||||||
|
{
|
||||||
|
std::stringstream ss(jsonString);
|
||||||
|
ptree pt;
|
||||||
|
read_json(ss,pt);
|
||||||
|
this->fromPropertyTree(pt);
|
||||||
|
}
|
||||||
|
|
||||||
|
ptree 200_response::toPropertyTree() const
|
||||||
|
{
|
||||||
|
ptree pt;
|
||||||
|
ptree tmp_node;
|
||||||
|
pt.put("name", m_Name);
|
||||||
|
pt.put("class", m_r_class);
|
||||||
|
return pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
void 200_response::fromPropertyTree(ptree const &pt)
|
||||||
|
{
|
||||||
|
ptree tmp_node;
|
||||||
|
m_Name = pt.get("name", 0);
|
||||||
|
m_r_class = pt.get("class", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t 200_response::getName() const
|
||||||
|
{
|
||||||
|
return m_Name;
|
||||||
|
}
|
||||||
|
|
||||||
|
void 200_response::setName(int32_t value)
|
||||||
|
{
|
||||||
|
m_Name = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::string 200_response::getRClass() const
|
||||||
|
{
|
||||||
|
return m_r_class;
|
||||||
|
}
|
||||||
|
|
||||||
|
void 200_response::setRClass(std::string value)
|
||||||
|
{
|
||||||
|
m_r_class = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
std::vector<200_response> create200_responseVectorFromJsonString(const std::string& json)
|
||||||
|
{
|
||||||
|
std::stringstream sstream(json);
|
||||||
|
boost::property_tree::ptree pt;
|
||||||
|
boost::property_tree::json_parser::read_json(sstream,pt);
|
||||||
|
|
||||||
|
auto vec = std::vector<200_response>();
|
||||||
|
for (const auto& child: pt) {
|
||||||
|
vec.emplace_back(200_response(child.second));
|
||||||
|
}
|
||||||
|
|
||||||
|
return vec;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,96 @@
|
|||||||
|
/**
|
||||||
|
* OpenAPI Petstore
|
||||||
|
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
|
||||||
|
*
|
||||||
|
* The version of the OpenAPI document: 1.0.0
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* NOTE: This class is auto generated by OpenAPI-Generator 6.1.0-SNAPSHOT.
|
||||||
|
* https://openapi-generator.tech
|
||||||
|
* Do not edit the class manually.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 200_response.h
|
||||||
|
*
|
||||||
|
* Model for testing model name starting with number
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef 200_response_H_
|
||||||
|
#define 200_response_H_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <memory>
|
||||||
|
#include <vector>
|
||||||
|
#include <boost/property_tree/ptree.hpp>
|
||||||
|
#include "helpers.h"
|
||||||
|
|
||||||
|
namespace org {
|
||||||
|
namespace openapitools {
|
||||||
|
namespace server {
|
||||||
|
namespace model {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Model for testing model name starting with number
|
||||||
|
/// </summary>
|
||||||
|
class 200_response
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
200_response() = default;
|
||||||
|
explicit 200_response(boost::property_tree::ptree const& pt);
|
||||||
|
virtual ~200_response() = default;
|
||||||
|
|
||||||
|
200_response(const 200_response& other) = default; // copy constructor
|
||||||
|
200_response(200_response&& other) noexcept = default; // move constructor
|
||||||
|
|
||||||
|
200_response& operator=(const 200_response& other) = default; // copy assignment
|
||||||
|
200_response& operator=(200_response&& other) noexcept = default; // move assignment
|
||||||
|
|
||||||
|
std::string toJsonString(bool prettyJson = false) const;
|
||||||
|
void fromJsonString(std::string const& jsonString);
|
||||||
|
boost::property_tree::ptree toPropertyTree() const;
|
||||||
|
void fromPropertyTree(boost::property_tree::ptree const& pt);
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////
|
||||||
|
/// 200_response members
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
int32_t getName() const;
|
||||||
|
void setName(int32_t value);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
std::string getRClass() const;
|
||||||
|
void setRClass(std::string value);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
int32_t m_Name = 0;
|
||||||
|
std::string m_r_class = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
std::vector<200_response> create200_responseVectorFromJsonString(const std::string& json);
|
||||||
|
|
||||||
|
template<>
|
||||||
|
inline boost::property_tree::ptree toPt<200_response>(const 200_response& val) {
|
||||||
|
return val.toPropertyTree();
|
||||||
|
}
|
||||||
|
|
||||||
|
template<>
|
||||||
|
inline 200_response fromPt<200_response>(const boost::property_tree::ptree& pt) {
|
||||||
|
200_response ret;
|
||||||
|
ret.fromPropertyTree(pt);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* 200_response_H_ */
|
@ -1,3 +0,0 @@
|
|||||||
Status code: 500 INTERNAL_SERVER_ERROR
|
|
||||||
Reason: std::logic_error raised
|
|
||||||
Response headers: [Connection:"close"]
|
|
@ -1,3 +0,0 @@
|
|||||||
Status code: 500 INTERNAL_SERVER_ERROR
|
|
||||||
Reason: std::logic_error raised
|
|
||||||
Response headers: [Connection:"close"]
|
|
Loading…
x
Reference in New Issue
Block a user